0

我正在尝试将变量“post”传递给部分。部分正在我的 show#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东西?在我的收藏中使用 nil:NilClass` 页面时。我知道我为什么会得到它,我只是想知道让它工作的干燥方式是什么?我应该只创建另一个部分吗?

谢谢


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

4

2 回答 2

1

你为什么要@post在你的部分引用?您应该post改用,这就是您正在做的事情的全部意义(将变量作为局部变量传递给局部变量)。

于 2013-09-22T01:25:00.647 回答
-1

您必须将渲染更改为:

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

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

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

为了解决您的收藏问题,还请查看 rails 指南并搜索:“3.4.5 Rendering Collections”。

于 2013-09-22T00:57:13.920 回答