rails partial render为nil提供了未定义的方法:NilClass

时间:2014-09-03 09:11:16

标签: ruby-on-rails ruby

我从优惠视图中呈现部分内容:

<%= 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变量执行任何操作。我明白了 nil的未定义方法:NilClass:

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

我做错了什么? 谢谢!

2 个答案:

答案 0 :(得分: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 :(得分:1)

<强>集合

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

虽然collection部分渲染功能真的很棒,但我们发现它有一个主要缺点,因为它很难管理你在部分内部调用的object。< / p>

如果您要调用自己的对象名称,最好use the as: argument定义本地变量:

  

要在partial中使用自定义局部变量名,请指定   :作为调用partial的选项:

     

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

     

通过此更改,您可以访问@products的实例   集合作为部分内的项局部变量。