我是 Rails 新手,在我的列表模型中添加评论系统时遇到了挑战。实际上,我有由用户创建的列表,并且我希望能够允许其他用户对这些列表发表评论。
到目前为止我所拥有的:
一个列表模型,包括:
has_many :comments
一个评论模型,包括:
belongs_to :listing
评论控制器:
class CommentsController < ApplicationController
def create
@listing = Listing.find(params[:listing_id])
@comment = @listing.comments.build(params[:body]) # ***I suspected that I needed to pass :comment as the params, but this throws an error. I can only get it to pass with :body ***
respond_to do |format|
if @comment.save
format.html { redirect_to @listing, notice: "Comment was successfully created" }
format.json { render json: @listing, status: :created, location: @comment }
else
format.html { render action: "new" }
format.json { render json: @comment.errors, status: :unprocessable_entity }
end
end
end
end
def comment_params
params.require(:comment).permit(:body, :listing_id)
end
最后是一个列表视图,其中包含以下用于收集和显示评论的代码:
<div class="form-group">
<%= form_for [@listing, Comment.new] do |f| %>
<%= f.label :comments %>
<%= f.text_area :body, :placeholder => "Tell us what you think", class: "form-control", :rows => "3" %>
<p><%= f.submit "Add comment", class: "btn btn-primary" %></p>
<% end %>
</div>
<%= simple_form_for [@listing, Comment.new] do |f| %>
<p>
<%= f.input :body, :label => "New comment", as: :text, input_html: { rows: "3" } %>
</p>
<p><%= f.submit "Add comment", class: "btn btn-primary" %></p>
<% end %>
评论框在视图中正确显示,我可以提交评论,但是似乎 :body 没有被保存,因此“x 分钟前提交”是唯一出现在我的评论部分。
关于我可能做错了什么的任何想法?我怀疑这是一个参数问题,但无法解决。
谢谢!