在simple_form视图中,提交按钮如下所示:
<%= f.button :submit, 'Save' %>
点击subaction
按钮时,我们正尝试传递参数Save
。单击按钮后,params[:subaction]
应具有“更新”值。以下是我们在视图中尝试过的内容,但它不起作用:
<%= f.button :submit, 'Save', :subaction => 'update' %>
单击params[:subaction]
按钮时,是否可以在Save
中传递值?
答案 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'
,我们可以使用以下name
和value
属性来使用单个参数提交。值得注意的是,提交的值(例如,'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上测试。