我正在尝试向表单添加一个选择列表,并且在读取控制器中的提交参数时遇到问题。这是我的“_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.关于导致此错误的原因的任何想法=
答案 0 :(得分:1)
您引用了params[:builder]
,但该值实际上是作为params[:project][:builder]
传递的。请尝试使用它。