我正在尝试为几个报告干掉代码。
我拿了表头代码并将其放入部分代码中。当我使用渲染部分调用它时,这工作正常。但是,当我尝试移动表格的主体代码时,我遇到了一些错误的问题'错误。
我的原始代码是
<% @complaints.each do |complaint| %>
<% if complaint.product_name == $complaint_group_name then %>
<tr>
<td><%= link_to complaint.id, complaint %></td>
<td style="text-align: right;"><%= complaint.length %></td>
<td style="text-align: center;"><%= complaint.disposition %></td>
<td width="20%"><%= complaint.sales_order %></td>
. . .
<% end %>
<% end %>
无效的代码是我将其移动到部分并尝试渲染部分
<% @complaints.each do |complaint| %>
<% if complaint.product_name == $complaint_group_name then %>
<%= render :partial => 'report_body' %>
<% end %>
<% end %>
我看到
的错误I, [2016-07-12T10:25:09.046754 #95324] INFO -- : Rendered complaints/report_by_product.html.erb within layouts/application (359.4ms)
I, [2016-07-12T10:25:09.046754 #95324] INFO -- : Completed 500 Internal Server Error in 375ms (ActiveRecord: 140.6ms)
F, [2016-07-12T10:25:09.046754 #95324] FATAL -- :
ActionView::Template::Error (undefined local variable or method `complaint' for #<#<Class:0x51caab8>:0x95242f8>):
1:
2:
3: <tr>
4: <td><%= link_to complaint.id, complaint %></td>
5: <td style="text-align: right;"><%= complaint.length %></td>
6: <td style="text-align: center;"><%= complaint.disposition %></td>
7: <td width="20%"><%= complaint.sales_order %></td>
app/views/complaints/_report_body.html.erb:4:in `_app_views_complaints__report_body_html_erb__209592603_78833796'
显然是|投诉|部分块未被部分识别。我要么能够传递它,要么将其包含在部分中 - 但是它会变得混乱,因为每个报告的分组都需要在部分中处理。
简短的问题是我可以通过|投诉|到部分?
答案 0 :(得分:2)
或者你可以使用这样的简短形式
<%= render 'report_body', complaint: complaint %>
相当于
<%= render partial: 'report_body', locals: { complaint: complaint } %>
答案 1 :(得分:1)
尝试通过投诉&#39;作为局部变量的部分:
render partial: 'report_body', locals: { complaint: complaint }