文章模型有很多评论,评论属于文章。
以下是文章部分内容。
<%= link_to article.title, article %>
<% if article.owned_by? current_user %>
<span class='actions'>
<%= link_to "Edit", edit_article_path(article) %>
<%= link_to "Delete", article, confirm: "Are you sure?", method: :delete %>
</span>
<% end %>
以下是评论部分内容。
<%= comment.name %> <<%= comment.email %>> commented:
<% if @article.owned_by? current_user %>
<span class="actions">
<%= link_to 'Delete', [@article, comment],
:confirm => 'Are you sure?', :method => :delete %>
</span>
<% end %>
在评论部分中使用article
时,您是否可以说明为什么@article
部分用于文章?为什么文章中的@article
不是部分?
如果我的问题太容易了,我很抱歉,但这对我来说真的很困惑。
答案 0 :(得分:4)
检查你的代码,你可能在某个地方有这样的东西:
<%= render partial: '_some_partial.html.erb', locals: { article: @article }
正如MrYoshiji的评论所指出的,@article
是一个在控制器中设置的实例变量,而article
是该部分的局部变量。
在partials中仅使用局部变量被认为是一种好习惯,因为这样可以更轻松地重用它们,包括在视图之间。
更新
如果您的评论模型中偶然出现这样的情况:
class Comment < ActiveRecord::Base
belongs_to :article
end
然后在注释partial中,您可以通过使用:comment.article
来避免实例变量和局部变量。