注释模型未保存并显示注释的 :body 部分



我是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 分钟前提交"是我评论部分显示的唯一内容。

关于我可能做错了什么的任何想法?我怀疑这是一个参数问题,但无法解决。

谢谢!

由于您在 Rails 4 中使用了strong_parameters范式,我认为您应该将注释创建行更改为:

 @comment = @listing.comments.build(comment_params)

我会将列表查找行更改为:

 @listing = Listing.find(params.permit(:listing_id))
只要

您正确地将comment_params方法中所有必需的参数列入白名单,它应该可以正常工作。

相关内容

  • 没有找到相关文章

最新更新