2014-09-03 69 views
0

我呈現從提供的視圖部分:導軌部分呈現給未定義的方法無:NilClass

<%= render partial: 'parent_offers_table', locals: { :parent_offers => [offer.parent_offer] } %> 

,然後在_parent_offers_table:

<%= render partial: 'parent_offer', collection: parent_offers %> 

然而,在_parent_offer我不能對parent_offer變量做任何事情。我得到 爲無未定義的方法:NilClass:

<tr> 
    <td><%= parent_offer.created_at %></td> 
    <td><%= parent_offer.version %></td> 
    <td><%= parent_offer.client.try(:name) %></td> 
    <td> 
    ............ 

我在做什麼錯? 謝謝!

回答

1

代替:

<%= render partial: 'parent_offer', collection: parent_offers %> 

嘗試:

<%= render partial: 'parent_offer', locals: {parent_offers: parent_offers} %> 

或:

<%= render 'parent_offer', parent_offers: parent_offers %> 
+1

此外,您應該確保部分使用的變量名符合要渲染的集合的'model_name'。 – 2014-09-03 09:17:28

+0

@ IS04這兩個解決方案我現在得到未定義的局部變量或方法'parent_offer' – 2014-09-03 09:25:07

+0

(固定),如果你需要'parent_offers'只是改變'集合'它 – IS04 2014-09-03 09:27:29

1

收集

<%= render partial: "parent_offer", collection: parent_offers, as: :parent_offer %> 

雖然collection部分渲染功能確實令人驚歎,但我們發現它有一個主要缺點,因爲它很難管理您在部分本身中調用的object

如果你調用自己的對象的名字,你會是最好的use the as: argument定義局部變量:

內的部分使用自定義局部變量名,指定 :作爲選項在調用部分:

<%= render partial: "product", collection: @products, as: :item %>

隨着這一變化,您可以訪問@products 集合的實例爲內部分項目本地變量。

相關問題