Есть ли способ передать параметры при нажатии кнопки отправки в представлении 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.

Другие вопросы по тегам