Ruby on Rails中的强制哈希参数

时间:2016-02-10 09:13:17

标签: ruby-on-rails ruby

我正在按照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])

我该如何解决这个问题?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:3)

我假设您没有在此操作中创建任何Task,但您应该找到您的任务并为其分配新的Comment。因此,您应该使用new

而不是find
@task = Task.find(params[:task_id])