Ruby / Rails:使用块迭代ActiveRecord查询结果?

时间:2014-12-27 05:55:51

标签: ruby-on-rails ruby

ruby​​ / rails新手,请耐心等待。

我执行了一个查询并将其存储在我的控制器中的@variable中。在我看来,我想将结果作为列表输出,如下所示:

控制器:

def new
  @content = OrientationContent.where("site_id in (?)", [0, session[:site_id]])
end

查看:

<%= @content.each do |c| %>
<ul>
    <li><%= c.content %></li>
</ul>
<% end %>

然而,我的输出如下:

Check 1
Check 2
Check 3
Check 4
Check 5
Check 6

[#<OrientationContent id: 17, site_id: 0, content: "Check 1", created_at: "2014-12-26 03:46:25",
updated_at: "2014-12-26 03:46:25">, #<OrientationContent id: 18, site_id: 0, content: "Check 
2", created_at: "2014-12-26 03:46:25", updated_at: "2014-12-26 03:46:25">

我故意切断最后的输出,因为它有点长。但它对所有检查项目从1到6执行此操作。

更重要的是,当我做(1..5)时,每个人都做| c |

它将输出数字1到5,最后它也将输出“(1..5)”

我的问题是如何保留输出的第一部分而不是后半部分(在我的第一个例子中,我不想输出记录。在我的第二个例子中,我不想要“(1) ..5)“显示。

1 个答案:

答案 0 :(得分:4)

修复:

<% @content.each do |c| %>
<ul>
    <li><%= c.content %></li>
</ul>
<% end %>

#each方法在完成迭代后返回集合。 <%=总是执行Ruby代码然后打印结果,但是<%执行代码,但从不打印。但是在您的代码中,您启用ERB来打印集合的结果,这就是您获得不想要的内容的原因。这就是为什么要调整我的修复来阻止打印,但只执行。