Simple_formビューでは、送信ボタンは次のようになります。
<%= f.button :submit, 'Save' %>
subaction
ボタンをクリックすると、params Save
を渡そうとしています。ボタンをクリックすると、params[:subaction]
の値は 'update'になります。これは私たちが視野に入れたものですが、うまくいきませんでした:
<%= f.button :submit, 'Save', :subaction => 'update' %>
Save
ボタンをクリックしたときにparams[:subaction]
に値を渡す方法はありますか?
名前と値のオプションを使用します。
<%= f.button :submit , name: "subaction",value: "update"%>
コントローラーで、値が「update」のparams [:subaction]を取得します
ダックスが指摘するように、
<%= hidden_field_tag(:subaction, 'update') %>
<%= f.button :submit, 'Save' %>
これにより、非表示フィールドを介してルーティングされたコントローラーアクションに文字列値「更新」が提供されます。その後、コントローラで取得できます
params[:subaction]
f.button :button, type: 'submit'
を指定することにより、name
およびvalue
属性を次のように使用して、単一のパラメーターを使用して送信できます。特に、送信された値(例:「ケーキ」)はボタンのテキスト(例:「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。