我发现当我迭代地渲染一个对象集合(例如注释)时,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>
#<Comment:0xb6f91968>#<Comment:0xb6f9016c>
正如您所看到的,对象有几个地址列表,我不希望在视图中有这些列表。有没有办法抑制这个输出?提前感谢您的时间!
答案 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