Есть ли способ передать параметры при нажатии кнопки отправки в представлении simple_form в rails 3.2.12?
В представлении simple_form кнопка отправки выглядит следующим образом:
<%= f.button :submit, 'Save' %>
Мы пытаемся передать параметры subaction
при нажатии на Save
кнопка. params[:subaction]
должен иметь значение "обновить" после нажатия кнопки. Вот что мы попробовали, но это не сработало:
<%= f.button :submit, 'Save', :subaction => 'update' %>
Есть ли способ передать значение в params[:subaction]
при нажатии на Save
кнопка?
3 ответа
Используйте имя и значение параметра.
<%= f.button :submit , name: "subaction",value: "update"%>
В вашем контроллере вы получите params[:subaction] со значением "update"
Как указывает Дакс,
<%= hidden_field_tag(:subaction, 'update') %>
<%= f.button :submit, 'Save' %>
Это обеспечит строковое значение update для действия маршрутизируемого контроллера через скрытое поле. Затем он может быть получен контроллером с
params[:subaction]
Указав 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' %>
контроллер
def controller_action
dessert_choice = params[:dessert_choice] # 'cake' or 'pie'
end
Этот подход избавляет от необходимости скрытых входных данных, как @dax, упомянутый в комментарии выше.
Проверено на простой форме 3.3.1 с Rails 4.2.