web-dev-qa-db-ja.com

Rails 3.2.12?

Simple_formビューでは、送信ボタンは次のようになります。

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

subactionボタンをクリックすると、params Saveを渡そうとしています。ボタンをクリックすると、params[:subaction]の値は 'update'になります。これは私たちが視野に入れたものですが、うまくいきませんでした:

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

Saveボタンをクリックしたときにparams[:subaction]に値を渡す方法はありますか?

19
user938363

名前と値のオプションを使用します。

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

コントローラーで、値が「update」のparams [:subaction]を取得します

34
Thaha kp

ダックスが指摘するように、

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

これにより、非表示フィールドを介してルーティングされたコントローラーアクションに文字列値「更新」が提供されます。その後、コントローラで取得できます

params[:subaction]
19
emery

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。

10
chrislopresto