每个循环在循环后输出不需要的记录转储

时间:2017-10-19 16:02:26

标签: ruby-on-rails ruby

我只是关注一些rails教程,并构建了一个基本的CRUD应用程序(带有评论系统的博客)。 我的问题是,当我遍历帖子的每个评论时,在每个循环之后显示恼人的记录转储。 看起来有一些检查转储,但我找不到原因。 这是循环的代码:

<h3>Comments</h3>
<%= @post.comments.each do |comment| %>
<div class="well">
  <p><strong><%= comment.username %></strong>: <%= comment.body %></p>
</div>
<%= link_to "[X]", [comment.post, comment], method: :delete, data: {confirm: 'Are you sure?'}, :class => 'btn btn-danger' %>
<hr>
<% end %>

这也是评论控制器:

class CommentsController < ApplicationController


  def create
    @post = Post.find(params[:post_id])
    @comment = @post.comments.create(comment_params)
    redirect_to post_path(@post)
  end

  private def comment_params
    params.require(:comment).permit(:username, :body)
  end
  def destroy
    @post = Post.find(params[:post_id])
    @comment = @post.comments.find(params[:id])
    @comment.destroy
    redirect_to post_path(@post)
  end


end

这是截图:

Ruby on rails each problem

非常感谢您的帮助

2 个答案:

答案 0 :(得分:2)

这是let key = 2; return { ...usersById, [key]: { ...usersById[key], age: 40 } } 方法返回的Enumerable。变化

each

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

只是因为你不想看到

答案 1 :(得分:1)

这里发生的是你正在使用<%= %>,它是ERB标记,它将其内容评估为Ruby,然后将其打印到页面。但是你不想打印出@post.comments.each do |comment|的值;你只是想评估它。这就是<% %>标记(无=)的用途。

您看到自己的文字的原因是<%= %>隐含地在其内容上调用to_s

此答案包含ERB标记类型的完整列表:https://stackoverflow.com/a/7996827/882025