我有以下代码时::加载ActiveModel ForbiddenAttributesError试图在app /控制器/ comments_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
能否请您看看您的服务器日志('登录/发展。日志“)和/或控制台窗口,并向我们展示* full *错误消息 - 不仅仅是您已经复制的标题,而且还包括在其两侧的几行内容。通常在服务器日志中你会得到一个被传递的实际参数的例子,有时它甚至会告诉你哪些属性被禁止。编辑你的问题,并在那里添加信息(而不是在评论中回复),因为注释中的代码格式是不可读的:P –
另外'params.require(:comment).permit()'这是字面上告诉轨道,是一个'params [:comment]''但是你不允许任何参数在'params [:comment]'中 - 所以如果你真的传递了一些东西(例如'{:content =>“这是一个评论”), :author_id => 1234}'),那么你会得到你所看到的错误。但看着我所要求的日志将证实这一点(以及你需要做些什么来修复它)。 –
谢谢我将它更改为@comment = book.comments.create!(params.require(:comment).permit!),但它在刷新页面后显示注释。我相信它应该显示它,当我保存 – User7354632781