ActionView::Template::Error (#<#<Class::0x000..导轨 6 AJAX



我构建了一个表,允许您内联编辑记录;我遇到的问题是分部在视图中刷新后不会重新渲染数据。我正在使用一个单独的控制器来处理更新/编辑部分渲染。我可以成功地内联呈现表单,只是在不接收未定义的局部变量的情况下,我无法通过更新部分错误。如何在不同的控制器中重新呈现update.js.erb操作的分部?

charts/activity_chart.html.erb

<div class="divTable greyGridTable">
<div class="divTableHeading">
<div class="divTableRow">
<div class="divTableHead">Date</div>
<% @facility_chart_events.select(:name).distinct.each |event_name| %>
<div class="divTableHead"><%= event_name %></div>
<% end %>
<div class="divTableHead">Update/Change</div>
</div>
</div>
<div class="divTableBody">
<% @facility_event_grids.each do |event| %>
<%= content_tag :div, class: 'divTableRow', id: dom_id(event) do %>
<%= render partial: "facility_event_trackers/facility_event_tracker", :locals => {event: event} %>
<% end %>
<% end %>
</div>
</div>

_inline_form.html.erb

<%= form_with model: facility_event_tracker, class: 'divTableRow', id: dom_id(facility_event_tracker, 'inline_form'), local: false do |f| %>
<div class="divTableCell">
<%= chart_tracker_grid_date(f.object.start_time) %>
</div>
<div class="divTableCell">
<%= text_field :event_count, label: false %>
</div>
<% end %>
<div class="divTableCell">
<%= f.submit 'Submit', class: 'ui black button basic' %>
</div>

charts_controller.rb

def facility_chart
@facility = Facility.find(params[:id])
@facility_events_grids = @facility.facility_event_trackers.order(start_time: :desc).page(params[:page]).per(40)
end

facility_event_trackers_controller.rb

def edit
end
def update
respond_to do |format|
if @facility_event_tracker.update(facility_event_tracker_params)
format.js {}
else
format.js {}
end

edit.js.erb

document.getElementById('<%= dom_id(@facility_event_tracker) %>').insertAdjacentHTML('afterend', "<%= j render 'inline_form', facility_event_tracker: @facility_event_tracker %>");

update.js.erb

document.getElementById('<%= dom_id(@facility_event_tracker, 'inline_form') %>').remove()
document.getElementById('<%= dom_id(@facility_event_tracker, 'inline_form') %>').innerHTML = <%= j render "facility_event_trackers/facility_event_tracker", facility_event_tracker: @facility_event_tracker %>"
document.getElementById('<%= dom_id(@facility_event_tracker) %>').style.display = 'table-row'

Rails控制台错误

//分部无法重新呈现以更新

ActionView::Tempalate::Error (undefined local variable or method `event' for #<#<Class:0x00000>:0x00005>):
1: <div class="divTableCell"><%= chart_tracker_grid_date(event.start_time) %>...
2: <div class="divTableCell"><%= event.event_count %></div>
app/views/facility_event_trackers/_facility_event_tracker.html.erb:1
app/views/facility_event_trackers/update.js.erb

您似乎只向update.js.erb文件传递facility_event_tracker对象,而不是事件对象:

document.getElementById('<%= dom_id(@facility_event_tracker, 'inline_form') %>').innerHTML = <%= j render "facility_event_trackers/facility_event_tracker", facility_event_tracker: @facility_event_tracker %>"

我建议您添加:

document.getElementById('<%= dom_id(@facility_event_tracker, 'inline_form') %>').innerHTML = <%= j render "facility_event_trackers/facility_event_tracker", facility_event_tracker: @facility_event_tracker, event: @event %>"

相关内容

最新更新