use*_*363 22 ruby-on-rails-3 simple-form
在simple_form视图中,提交按钮如下所示:
<%= f.button :submit, 'Save' %>
Run Code Online (Sandbox Code Playgroud)
我们试图subaction
在单击Save
按钮时传递参数.在params[:subaction]
点击该按钮后,应该有"更新"的价值.以下是我们在视图中尝试的但它不起作用:
<%= f.button :submit, 'Save', :subaction => 'update' %>
Run Code Online (Sandbox Code Playgroud)
有没有办法在params[:subaction]
单击Save
按钮时传递值?
Tha*_* kp 38
使用名称和值选项.
<%= f.button :submit , name: "subaction",value: "update"%>
Run Code Online (Sandbox Code Playgroud)
在你的控制器中你会得到params [:subaction],其值为"update"
eme*_*ery 19
正如达克斯指出的那样,
<%= hidden_field_tag(:subaction, 'update') %>
<%= f.button :submit, 'Save' %>
Run Code Online (Sandbox Code Playgroud)
这将通过隐藏字段为路由控制器操作提供字符串值'update'.然后可以由控制器检索它
params[:subaction]
Run Code Online (Sandbox Code Playgroud)
chr*_*sto 10
通过指定f.button :button, type: 'submit'
,我们可以使用如下的name
和value
属性来使用单个参数进行提交.值得注意的是,提交的值(例如,"蛋糕")可能与按钮文本不同(例如,"最佳蛋糕").
_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' %>
Run Code Online (Sandbox Code Playgroud)
调节器
def controller_action
dessert_choice = params[:dessert_choice] # 'cake' or 'pie'
end
Run Code Online (Sandbox Code Playgroud)
这种方法避免了对上面注释中提到的@dax隐藏输入的需求.
使用Rails 4.2在Simple Form 3.3.1上进行测试.