我只是关注一些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
这是截图:
非常感谢您的帮助
答案 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