2016-03-19 2 views
0

ajaxで新しいレコードを作成した後、NOMETHODERRORが表示され、新しいレコードを表示するためにページをリロードする必要があります。Ajaxでレコードを作成するときに、レイアウトをレンダリングしない

エラーが発生しました。

レンダリングtime_entries/_time_entry.html.erb(3.4ms)レンダリング time_entries/create.js.erb(4.9ms)は41ms(ActiveRecordは:4.4ms)で500内部サーバーエラー を完了

NoMethodError - 「nilのために:NilClass:
アプリ/ビュー/ time_entries/_time_entry.html.erb:1:で '未定義のメソッド `各_app_views_time_entries__time_entry_html_erb___4086905375499854267_70174828432680'

私が間違って何?

time_entries_controller.erb

class TimeEntriesController < ApplicationController 

    ... 

    respond_to :html, :js 

    def index 
    @time_entries = current_user.time_entries.all.order("date DESC") 
    @time_entries_days = @time_entries.group_by{ |t| t.date.beginning_of_day } 
    respond_with(@time_entry) 
    end 

    def create 
    @time_entry = TimeEntry.new(timeentry_params) 
    @time_entry.user_id = current_user.id 

    respond_to do |format| 
     if @time_entry.save 
     format.html { redirect_to @time_entry, notice: 'Arbeitszeit wurde eingetragen' } 
     format.json { render :show, status: :created, location: @time_entry } 
     format.js 
     else 
     format.html { render :new } 
     format.json { render json: @time_entry.errors, status: :unprocessable_entity } 
     format.js 
     end 
    end 

    end 

    ... 

_time_entry.html.erb
部分

<% @time_entries_days.each do |day, time_entries| %> 
    <% if day.today? %> 
     <div class="column-12 list-group">Today, <%= l day, format: :dm %></div> 
    <% else %> 
     <div class="column-12 list-group"><%= l day, format: :dm %></div> 
    <% end %> 

    <ul class="lists"> 
     <% time_entries.each do |time_entry| %> 
     <li class="list-item" id="time_entry_<%= time_entry.id %>"> 
      <div class="list-item__content"> 
      <h3 class="list-item__title"> 
       <%= link_to time_entry.category.name, time_entry %> 
       <span><%= l time_entry.start_time, format: :hm %></span> - <span><%= l time_entry.end_time, format: :hm %></span> 
      </h3> 
      <p><%= time_entry.note %></p> 
      </div> 
      <span class="list-item__label"><%= time_entry.hours %>h</span> 
     </li> 
     <% end %> 
    </ul> 
<% end %> 

index.html.erb

<% if can? :create, TimeEntry %> 
     <%= link_to 'Add new Time Entry', new_time_entry_path, remote: true, class: 'btn btn-primary', :data => { :'popup-open' => 'popup-1' } %> 
    <% end %> 

    ... 

    <div class="row" id="container_time_entries"> 
    <%= render "time_entry" %> 
    </div> 

create.js.erbテスト用
新しいタイムエントリを作成してもアラートが表示されません。

alert("HALLO"); 

create.js.erb通常

$('.modal-bg').hide(); 
$('.popup').fadeOut(350); 
$('#container_time_entries').html("<%= j(render 'time_entry') %>"); 

答えて

0

あなたの作成方法で変数@time_entries_daysを設定していないが、あなたはあなたの_time_entry.html.erbでそれを必要とします。

これを設定してください。

+0

しかし、私は別のレコードを作成した後、ページを更新せずに新しいレコードを見ることができます。私 –

関連する問題