Rails 3 - 为什么我的Post#Show视图在评论列表后面的一个大块中显示其所有评论的数据库数据?

tud*_*ddy 0 comments ruby-on-rails view

在Rails 3博客类型的应用程序中,我有一个多态评论模型,帖子有评论(通过:评论).Post#Show页面有一个评论表单,通过AJAX发布到下面的评论列表.一切都工作正常除了Rails由于某种原因在我的评论列表的最底部的[]中为该帖子上的所有评论转储完整的数据库条目列表.我无法弄清楚这是来自哪里以及为什么!

这里可能是相关的代码块,请随时要求更多!提前致谢.

意见/职位/节目

...
<%= render 'comments' %>
...
Run Code Online (Sandbox Code Playgroud)

意见/职位/ _comments

<%= render :partial => 'comments/form' %>

<ul class="comments">
  <% if @post.comments.empty? %>
    <li>none yet</li>
  <% else %>
    <%= render :partial => 'comments/comment' %>
  <% end %>
</ul>
Run Code Online (Sandbox Code Playgroud)

观点/评论/评论

<%= @comments.each do |comment| %>
<li>
  <p class="comment_body">"<%= comment.body %>"</p>
  <br/>
  <p class="comment_info"><%= comment.name %> - <%= time_ago_in_words(comment.created_at) %> ago </p>
</li>
<% end %>
Run Code Online (Sandbox Code Playgroud)

发布控制器

def show
  @post = Post.find(params[:id])
  @comments = @post.comments
  @commentable = @post
  @comment = Comment.new(:commentable => @post)
  @title = @post.author
end
Run Code Online (Sandbox Code Playgroud)

这里是错误蔓延的地方(来自Page Source).在最后一条评论关闭之后和评论结束之前:

....
</li>
[#&lt;Comment id: 97, name: &quot;hmmm?&quot;, body: &quot;hmmm&quot;, created_a...
</ul>
Run Code Online (Sandbox Code Playgroud)

那是什么东西,为什么会在这里!?谢谢.

num*_*407 5

它是=在@comments.each标签.它返回的结果each是整个数组.

例如:

irb> [1,2].each {|i| puts i }
1
2
=> [1, 2]
Run Code Online (Sandbox Code Playgroud)

所以:

<%= @comments.each do |comment| %>
Run Code Online (Sandbox Code Playgroud)

应该只是:

<% @comments.each do |comment| %>
Run Code Online (Sandbox Code Playgroud)