我正在尝试将变量“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方式是什么?我应该创建另一个部分吗?
谢谢
在下面给出了我的解决方案..虽然,这可能不是最好的方式......
答案 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渲染集合”。