Ответ 1
Используйте имя и значение.
<%= f.button :submit , name: "subaction",value: "update"%>
В вашем контроллере вы получите params [: subaction] со значением "update"
В представлении simple_form кнопка submit выглядит так:
<%= f.button :submit, 'Save' %>
Мы пытаемся передать параметры subaction
при нажатии кнопки Save
. После нажатия кнопки params[:subaction]
должно иметь значение "update". Вот что мы пробовали, но это не сработало:
<%= f.button :submit, 'Save', :subaction => 'update' %>
Есть ли способ передать значение в params[:subaction]
при нажатии кнопки Save
?
Используйте имя и значение.
<%= f.button :submit , name: "subaction",value: "update"%>
В вашем контроллере вы получите params [: subaction] со значением "update"
как указывает dax,
<%= hidden_field_tag(:subaction, 'update') %>
<%= f.button :submit, 'Save' %>
Это обеспечит строковое значение "обновление" для действия маршрутизируемого контроллера через скрытое поле. Затем он может быть восстановлен контроллером с помощью
params[:subaction]
Задав 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.