开发者

Have a form submit to two possible different controllers

I have the following form on a site

<% 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 %>

I want to add another button called Generate that is passed the same variables (start_date and end_date) as the form below but calls the action generate instead of run. Ideally I'd like to do this without having to have two duplicate forms.

开发者_JAVA技巧

Any help is appreciated.


or you may bind your button onclick action Something like

$("#your_button_id").click(function() {
  $.post("second_url", $("#your_form_id").serialize());
  return true;
});


It's possible with a javascript. In the view you can use name attribute or html5 data-attribute as I do below. The main idea is that it's necessary to store somewhere url to proper form action.

<% 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 %>

Simple JQuery script (should work but not tested):

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();
});

The trick is that while form has not class ready, it won't be submitted. And you add this class after setting proper form action.

This works for me when I initialize hidden form fields with values depending on what button was clicked but with the same form action. Though the approach in your case can be the same. Hope this direction will help you.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜