我正在按照Ruby-on-Rails教程逐步完成并使用Ruby 2.0.0。在某些 点,相同的文件输入在教程视频中工作但是 在我的应用中生成错误消息。
这是代码(用于评论控制器):
class CommentsController < ApplicationController
def create
@task = Task.new(params[:task_id])
@comment = @task.comments.build(comment_params)
if @task.save
redirect_to @task, notice: 'Comment successfully posted.'
else
redirect_to @task, alert: 'Comment not posted.'
end
end
private
def comment_params
params.require(:comment).permit(:name, :email, :body)
# {comment : {name:,email:,body:}}
end
end
尝试创建评论时收到的错误消息是
ArgumentError in CommentsController#create
When assigning attributes, you must pass a hash as an argument.
导致错误的行是@task = Task.new(params[:task_id])
我该如何解决这个问题?任何帮助表示赞赏。
答案 0 :(得分:3)
我假设您没有在此操作中创建任何Task
,但您应该找到您的任务并为其分配新的Comment
。因此,您应该使用new
:
find
@task = Task.find(params[:task_id])