Rails中的NoMethodError:传递变量

时间:2013-09-22 00:51:43

标签: ruby-on-rails

我正在尝试将变量“post”传递给partial。部分正在我的节目#view&我也在使用它渲染一个集合。这是它的样子(注意“@”):

##Show#View
<%= render 'my_partial/my_view', post: @post %>
##Collection ## (I'm not using the "@" symbol)
<%= render 'my_partial/my_view', post: post %>


#Mypartial

<% if @post.something? %>
   ## do this
<% else %>
   ## do that
<% end %>

然后我得到了漂亮的NoMethodError undefined method某事? for nil:NilClass`页面在我的收藏中使用它。我知道为什么我会得到它,我只是想知道让它工作的DRY方式是什么?我应该创建另一个部分吗?

谢谢


在下面给出了我的解决方案..虽然,这可能不是最好的方式......

2 个答案:

答案 0 :(得分:1)

为什么要引用部分中的@post?您应该使用post代替,这是您正在做的事情的全部要点(将变量作为局部变量传递给部分)。

答案 1 :(得分:-1)

您必须将渲染更改为:

<%= render 'my_partial/my_view', locals: { post: @post } %>

查看导轨指南:http://guides.rubyonrails.org/layouts_and_rendering.html

搜索“3.4.4传递局部变量”,您将找到有关此内容的更多信息。

要解决收集问题,请查看导轨指南并搜索:“3.4.5渲染集合”。