Направляющие: remote_form_for, не играя приятно с несколькими submit_tags

У меня есть форма со следующим:

<% form_remote_tag :url => {:action => :wotsit} do %>
  <%= submit_tag "Foo" %>
  <%= submit_tag "Bah" %>
<% end %>

Я ожидал бы, что отправленные параметры отразятся, какая кнопка была нажата. Однако, неважно, который кнопка я нажимаю, отправленные параметры включают "commit"=>"Foo".

Что я делаю неправильно?

6
задан grifaton 23 April 2010 в 22:08
поделиться

3 ответа

form_remote_tag генерирует некоторый Javascript, который использует метод Prototype Form.serialize для отправки значений полей вашей формы на сервер. Form.serialize - это всегда используется первый элемент с именем «commit», поэтому всегда «Foo».

В качестве временного решения вы можете добавить скрытое поле, настроить его в тегах отправки и отправить форму:

<%= hidden_field_tag "real_commit", "" %>
<%= button_to_function "Foo", "$('real_commit').value='Foo';$('myform').submit();" %>
<%= button_to_function "Bah", "$('real_commit').value='Bah';$('myform').submit();" %>
5
ответ дан 17 December 2019 в 00:06
поделиться

Вместо использования одной формы с двумя тегами отправки вы можете использовать либо 2x button_to_remote , либо 2x link_to_remote :

<%= button_to_remote "Foo", :url => { :action => :wotsit } %>
<%= button_to_remote "Bah", :url => { :action => :wotsit } %>

Я думаю, button_to_remote отправляет "Foo "или" Ба "вместе. link_to_remote определенно делает не . Но тогда вы можете использовать опцию : with для отправки чего-либо в качестве параметра.

Для этого обратитесь к документации PrototypeHelper .

1
ответ дан 17 December 2019 в 00:06
поделиться

ИМХО, это очиститель сенсорного экрана ...

<%= hidden_field_tag "real_commit", "" %>               
<%= f.submit "Foo", :OnClick => "$('#real_commit')[0].value='Foo'" %>
<%= f.submit "Bar", :OnClick => "$('#real_commit')[0].value='Bar'" %>
0
ответ дан 17 December 2019 в 00:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: