控制器无法读取参数

时间:2015-04-10 16:42:23

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

我正在尝试向表单添加一个选择列表,并且在读取控制器中的提交参数时遇到问题。这是我的“_form”视图:

 <%=  select("project", "builder", Builder.all.collect {|p| [ p.name, p.id ] }, {include_blank: 'Choose builder'}) %>

这很好用,数据库中的所有Builders都显示在列表中。 我的控制器的“创建”方法如下所示:

@project = Project.new(project_params)
@project.builder = Builder.find(params[:builder])

现在,当选择一个构建器并提交我的表单时,我收到以下错误:

  

无法使用'id'=

找到Builder

错误页面还会打印出请求的参数,看起来是正确的:

 {"utf8"=>"✓", "authenticity_token"=>"lhkFtWbWD12X7f8QHwaNo3nbkVyda6pKmlfidhGFqV+QXYyPL8GWvS8ICUMYKSQMXVYT/gornVDd3tmT6FvHVQ==",
     "project"=>{"name"=>"my project",
     "builder"=>"1"},
     "commit"=>"Create Project"}

我在这里选择的“Builder”对象确实有Id 1.关于导致此错误的原因的任何想法=

1 个答案:

答案 0 :(得分:1)

您引用了params[:builder],但该值实际上是作为params[:project][:builder]传递的。请尝试使用它。