Отправьте форму для двух разных контроллеров - PullRequest
0 голосов
/ 03 ноября 2010

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

<% form_tag({ :action => :subid}, :id=>'run_report', :name => 'run_report') do %>
 Beginning Date <%=  date_select("post", "start_date", :start_year => 2010,:order =>    [:month, :day, :year]) %><br />
 End Date <%=  date_select("post", "end_date", :start_year => 2010,:order => [:month, :day, :year]) %><br />
 <%= submit_tag 'Run', :name => "submit", :class => "submit_btn" %>
<% end %>

Я хочу добавить еще одну кнопку с именем Generate, которой передаются те же переменные (start_date и end_date), что и в приведенной ниже форме, но при этом вызывается действие generate вместо run. В идеале я хотел бы сделать это без необходимости иметь две дубликаты.

Любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 04 ноября 2010

или вы можете привязать свою кнопку к действию «клик» Что-то вроде

$("#your_button_id").click(function() {
  $.post("second_url", $("#your_form_id").serialize());
  return true;
});
0 голосов
/ 04 ноября 2010

Это возможно с помощью JavaScript. В представлении вы можете использовать атрибут name или атрибут данных html5, как я делаю ниже. Основная идея заключается в том, что необходимо хранить где-то URL для правильного действия формы.

<% form_tag(:id=>'run_report', :name => 'run_report') do %>

 <%= submit_tag 'Run', :name => "submit", :data-action => "#{url_for(action1)}", :class => "submit_btn" %>
 <%= submit_tag 'Generate', :name => "generate", :data-action => "#{url_for(action2)}", :class => "submit_btn" %>
<% end %>

Простой скрипт JQuery (должен работать, но не тестировался):

var $form = $('#run_report);
$('#run_report :submit').click(function() {
  $form.attr('action', $(this).attr('data-action')).addClass('ready').submit();
});

$form.submit(function(e){ 
  if(!$form.hasClass('ready')) {
    e.preventDefault();
});

Хитрость в том, что хотя форма не имеет класса ready, она не будет отправлена. И вы добавляете этот класс после установки правильного действия формы.

Это работает для меня, когда я инициализирую скрытые поля формы со значениями в зависимости от того, какая кнопка была нажата, но с тем же действием формы. Хотя подход в вашем случае может быть таким же. Надеюсь, что это направление поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...