文章与@article有什么不同?

时间:2015-11-26 14:54:28

标签: ruby-on-rails instance-variables

文章模型有很多评论,评论属于文章。

以下是文章部分内容。

  <%= 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 %> &lt;<%= comment.email %>&gt; 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不是部分?

如果我的问题太容易了,我很抱歉,但这对我来说真的很困惑。

1 个答案:

答案 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来避免实例变量和局部变量。