我的评论没有出现在我的评论部分,除非我通过控制台添加它们

时间:2014-04-27 13:37:12

标签: ruby-on-rails ruby ruby-on-rails-4 comments

因此我在创建评论时遇到了ruby on rails问题。我没有收到任何错误,但我的评论也没有显示出来。我做错了什么?我试图在过去2小时内调试它:X

我的show.html.erb

<h2>Comments</h2>

   <%=  @article.comments.each do |comment| %>
      <strong><%= comment.body %></strong> <br />
      <hr />
<% end %>

<%= form_tag :action => "comment", :id => @article %>
   <%= text_area "comment", "body" %><br />
   <%= submit_tag "Comment" %>
</form>

我的文章控制器:

 def comment
   Article.find(params[:id]).comments.create(params[comment_params])
   flash[:notice] = "Added your comment"
   redirect_to :action => "show", :id => params[:id]
end

和我的路线

 resources :articles do
  post 'comment', on: :member
end

请告诉我,为什么它不能保存我的文字?当我创建评论时,我检查它,并看到:

#<Comment id: 21, email: nil, body: nil, created_at: "2014-04-27 13:27:40", updated_at: "2014-04-27 13:27:40", user_id: nil, article_id: 3>]

不要介意user_id:nil,我是偶然创建的,并打算删除它^^一旦我们解决了这个问题^^

2 个答案:

答案 0 :(得分:0)

问题出在这一行

Article.find(params[:id]).comments.create(params[comment_params])

应该是这样的

Article.find(params[:id]).comments.create(comment_params)

答案 1 :(得分:0)

您的问题是尝试使用强参数。

您目前正在做

def comment_params
  params.require(:comment).permit(:body)
end

params[comment_params]

你想做的事情就像是

def comment_params
  require(:comment).permit(:body)
end

params.comment_params