有没有办法在rails 3.2.12中的simple_form视图中单击提交按钮时传递参数?

时间:2013-07-29 04:56:36

标签: ruby-on-rails-3 simple-form

在simple_form视图中,提交按钮如下所示:

<%= f.button :submit, 'Save' %>

点击subaction按钮时,我们正尝试传递参数Save。单击按钮后,params[:subaction]应具有“更新”值。以下是我们在视图中尝试过的内容,但它不起作用:

<%= f.button :submit, 'Save', :subaction => 'update' %>

单击params[:subaction]按钮时,是否可以在Save中传递值?

3 个答案:

答案 0 :(得分:34)

使用名称和值选项。

   <%= f.button  :submit , name: "subaction",value: "update"%>

在你的控制器中你会得到params [:subaction],其值为“update”

答案 1 :(得分:19)

正如达克斯指出的那样,

<%= hidden_field_tag(:subaction, 'update') %>
<%= f.button :submit, 'Save' %>

这将提供字符串值&'39; update&#39;通过隐藏字段到路由控制器操作。然后,控制器可以使用

检索它
params[:subaction]

答案 2 :(得分:9)

通过指定f.button :button, type: 'submit',我们可以使用以下namevalue属性来使用单个参数提交。值得注意的是,提交的值(例如,'cake')可能与按钮文本不同(例如,'The Best Cake')。

<强> _form.html.erb

<%= f.button :button, 'The Best Cake', type: 'submit', name: 'dessert_choice', value: 'cake' %>
<%= f.button :button, 'The Best Pie', type: 'submit', name: 'dessert_choice', value: 'pie' %>

<强>控制器

def controller_action
  dessert_choice = params[:dessert_choice] # 'cake' or 'pie'
end

这种方法避免了对上面评论中提到的@dax隐藏输入的需求。

使用Rails 4.2在Simple Form 3.3.1上测试。