文章与@article 之间有什么不同?

What is different between article vs @article?

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

以下为文章部分内容

  <%= 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

如果我的问题对你来说太简单了,我很抱歉,但我真的很困惑。

检查你的代码,你可能在某个地方有这样的东西:

<%= render partial: '_some_partial.html.erb', locals: { article: @article }

正如 Yoshiji 先生在评论中指出的那样,@article 是一个实例变量,在控制器中设置,而 article 是该部分的局部变量。

在局部变量中仅使用局部变量被认为是一种很好的做法,因为这使您可以更轻松地重用它们,包括在视图之间。


更新

如果你的 Comment 模型中碰巧有这样的东西:

class Comment < ActiveRecord::Base
  belongs_to :article
end

然后在部分注释中,您可以通过使用 comment.article 代替实例变量和局部变量。