在Rails中迭代显示对象

时间:2011-05-11 06:33:14

标签: ruby-on-rails view iterator

我发现当我迭代地渲染一个对象集合(例如注释)时,rails也会列出对象的地址。例如,我的视图可能包含以下内容:

<h3>Comments</h3>
<% if @blogpost.comments.any? %>
  <%= @blogpost.comments.each do |comment| %>
    <%= render :partial => "comment", :locals => {:comment => comment} %>
  <% end %>  
<% end %>

该视图经常显示:

<h3>Comments</h3> 
  <p>comment #2</p> 
  <p class="post-info"> >> Example User,  about 1 hour ago. </p> 

  <p>this is user 1's comment on user 5's article</p> 
  <p class="post-info"> >> Example User,  2 days ago. </p> 

#&lt;Comment:0xb6f91968&gt;#&lt;Comment:0xb6f9016c&gt;

正如您所看到的,对象有几个地址列表,我不希望在视图中有这些列表。有没有办法抑制这个输出?提前感谢您的时间!

2 个答案:

答案 0 :(得分:3)

<%= @blogpost.comments.each do |comment| %>

中删除 =

当我们在&lt; %%&gt;中添加=时rails将执行erb代码并以html格式呈现输出。

答案 1 :(得分:0)

此外,您并不真正需要所有这些代码 您可以只留下这两行来为'comment'集合呈现@blogpost.comments部分:

<h3>Comments</h3>
<%= render @blogpost.comments %>

和Rails会做到这一点 http://api.rubyonrails.org/classes/ActionView/Partials.html