Есть ли способ передать параметры при нажатии кнопки отправки в представлении simple_form в rails 3.2.12?

В представлении simple_form кнопка submit выглядит так:

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

Мы пытаемся передать параметры subaction при нажатии кнопки Save. После нажатия кнопки params[:subaction] должно иметь значение "update". Вот что мы пробовали, но это не сработало:

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

Есть ли способ передать значение в params[:subaction] при нажатии кнопки Save?

Ответ 1

Используйте имя и значение.

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

В вашем контроллере вы получите params [: subaction] со значением "update"

Ответ 2

как указывает dax,

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

Это обеспечит строковое значение "обновление" для действия маршрутизируемого контроллера через скрытое поле. Затем он может быть восстановлен контроллером с помощью

params[:subaction]

Ответ 3

Задав 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, упомянутых в комментарии выше.

Протестировано на простой форме 3.3.1 с Rails 4.2.