从params中的嵌套哈希中检索选项

时间:2012-08-18 09:07:39

标签: ruby-on-rails params

我在视图中有以下代码,用于编辑规范状态(已完成或未完成)。

%table
  = form_for project_specification_path(@project,@specification), :method => :put do |f|
    %tr
      %td
        = f.label :status, 'Status'
        = f.select :status, ['Completed','Not completed']
    %tr
      %td
        = f.submit 'Save'

点击“保存”后,在规格控制器的更新方法中,我需要更新@specification属性。

params看起来像这样:

=> {"utf8"=>"✓",
 "_method"=>"put",
 "authenticity_token"=>"Wp2OSBaOCP9aIx27B0ZTnvuFtN0m4O45efDwdA5KB5Q=",
 "/projects/1/specifications/1"=>{"status"=>"Completed"},
 "Status"=>"Save status",
 "action"=>"update",
 "controller"=>"specifications",
 "project_id"=>"1",
 "id"=>"1"}

我需要编写类似@ specification.update_attributes(????)的内容,但我不知道如何从嵌套哈希中检索参数:status。

由于

1 个答案:

答案 0 :(得分:1)

#form_for的第一个参数应该是模型实例或符号模型名称,而不是路径。应使用:url => ...选项提供自定义路径,例如......

= form_for :specification, :url => project_specification_path(@project,@specification), :method => :put do |f|
  ...