Mein Problem ist, nachdem ich einen neuen Datensatz mit AJAX erstellen Ich bekomme einen NOMETHODERROR und ich muss die Seite neu laden, um den neuen Datensatz zu sehen.Schienen nicht Layout rendern, wenn Datensatz mit Ajax erstellen
Der Fehler bekomme ich in Terminal.
Rendered time_entries/_time_entry.html.erb (3.4ms) Rendered time_entries/create.js.erb (4.9ms) Abgeschlossene 500 Internal Server Error in 41ms (Active: 4.4ms)
NoMethodError - nicht definierte Methode `jeder‘ für nil: NilClass:
app/views/time_entries/_time_entry.html.erb: 1: in '_app_views_time_entries__time_entry_html_erb___4086905375499854267_70174828432680'
Was ich falsch gemacht?
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
die partielle
<% @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 zum Testen
Ich erhalte keine Warnung, nachdem ich einen neuen Zeiteintrag erstellt habe.
alert("HALLO");
create.js.erb normalen
$('.modal-bg').hide();
$('.popup').fadeOut(350);
$('#container_time_entries').html("<%= j(render 'time_entry') %>");
Aber jetzt kann ich den neuen Datensatz sehen, ohne die Seite zu aktualisieren, nachdem ich einen anderen Datensatz erstellt habe. ich –