0

在我的控制器中,我有:

def show
  @entry = Entry.find(params[:id])
  @comments = @entry.comments
end

现在在视图中:

<% if !@comments.empty? %>
  <% @comments.each do |comment| %>
    <%= comment.id %>
  <% end %>
<% end %>

我知道@comments不是空的,但是在这里我得到@comments.empty? == true 当我添加<%= @comments %>beforeif语句时,一切正常。empty?false,我得到评论 ID。当我添加这个新行时,似乎运行了获取评论的查询?知道为什么以及如何在没有这条附加线的情况下使其工作吗?

4

2 回答 2

4

为什么你需要这个声明?

这将起作用

  <% @comments.each do |comment| %>
    <%= comment.id %>
  <% end %>
于 2012-11-22T20:00:13.130 回答
1

永远不要使用if !. 而是使用unless.

在这里,您甚至根本不需要空检查语句。.each仅在存在某些值时进行迭代。

于 2012-11-22T20:47:11.663 回答