2016-07-12 2 views
0

Я пытаюсь высушить код для нескольких отчетов.Попытка высушить код - Переменная не переходит к частичной

Я взял код заголовка таблицы и поместил его в частичное. Это отлично работает, когда я называю это частичным рендерингом. Однако, когда я пытаюсь переместить код для тела таблицы, я получаю ошибку «что-то пошло не так».

Мой исходный код, который работает в

<% @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' 

Видимо жалоба | часть блока не распознается частичным. Я либо должен иметь возможность передать это, либо включить его в частичное, - но тогда он становится беспорядочным, потому что группировка для каждого отчета должна обрабатываться в частичном.

Короткий вопрос: могу ли я передать жалобу | к частичной?

ответ

1

Попробуйте пройти 'жалобу' в качестве локальной переменной к частичной:

render partial: 'report_body', locals: { complaint: complaint } 
+0

Это сделал это. Теперь я понимаю, как работают местные жители. –

2

Или вы можете использовать короткую форму, как этот

<%= render 'report_body', complaint: complaint %> 

что эквивалентно

<%= render partial: 'report_body', locals: { complaint: complaint } %> 
Смежные вопросы