【发布时间】:2016-10-03 20:46:57
【问题描述】:
我在 app/controllers/cmets_controller.rb 中有以下代码
class CommentsController < ApplicationController
def create
book = Book.find params[:book_id]
comment = book.comments.new params[:comment]
comment.save
flash[:notice] = 'Comment saved'
redirect_to book_path(book)
end
end
我不确定为什么在comment = book.comments.new params[:comment] 行出现错误
我尝试将comment = book.comments.new params[:comment] 更改为comment = book.comments.new(comment),但是当我点击保存时它没有显示对应用程序的评论
还尝试在下面做这样的事情
class CommentsController < ApplicationController
def create
book = Book.find params[:book_id]
# comment = book.comments.new params[:comment]
comment = book.comments.new(comment_params)
comment.save
flash[:notice] = 'Comment saved'
redirect_to book_path(book)
end
def comment_params
params.require(:comment).permit()
end
end
【问题讨论】:
-
您能否查看您的服务器日志 (
log/development.log) 和/或控制台窗口,并向我们显示 full 错误消息 - 而不仅仅是您复制的内容标题,还有那两边的几行。通常在服务器日志中你会得到一个实际传递的参数的例子,有时它甚至会告诉你哪些属性是被禁止的。编辑您的问题并在此处添加信息(而不是在 cmets 中回复),因为 cmets 中的代码格式不可读:P -
另外
params.require(:comment).permit()这实际上是在告诉rails 你允许有一个params[:comment]但你不允许任何参数在那个params[:comment]中——所以如果你真的传递了一些东西(例如{ :content => "this is a comment", :author_id => 1234}) 那么你会得到你所看到的错误。但是查看我要求的日志将确认这一点(以及您需要做些什么来修复它)。 -
谢谢我把它改成了@comment = book.cmets.create!(params.require(:comment).permit!) 但它在我刷新页面后显示评论。我相信当我点击保存时它应该显示它
标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 ruby-on-rails-3.2