Javascript 将表单提交给两个可能不同的控制器
我在一个网站上有以下表格Javascript 将表单提交给两个可能不同的控制器,javascript,jquery,ruby-on-rails,forms,Javascript,Jquery,Ruby On Rails,Forms,我在一个网站上有以下表格 <% 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 /> E
<% 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 %>
:subid},:id=>'run\u report',:name=>'run\u report')do%>
2010年开始日期,:订单=>[:月,:日,:年]%>
2010年结束日期,:订单=>[:月,:日,:年]%>
“提交”,:class=>“提交”%>
我想添加另一个名为Generate的按钮,它传递的变量(start_date和end_date)与下面的表单相同,但调用操作Generate而不是run。理想情况下,我希望这样做,而不必有两个重复的形式
非常感谢您的帮助。使用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 %>
诀窍在于,虽然表单还没有class就绪
,但它不会被提交。在设置了正确的表单操作之后,您添加了这个类
<% 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 %>
当我使用值初始化隐藏的表单字段时,这对我来说是有效的,值取决于单击的按钮,但使用相同的表单操作。尽管在你的案例中,方法可能是相同的。希望这个方向能对您有所帮助。或者您可以将按钮绑定到单击操作上,例如
$("#your_button_id").click(function() {
$.post("second_url", $("#your_form_id").serialize());
return true;
});
我认为这是不可能的。但您可以为dry创建partial。这很简单,但在这种情况下,有必要硬编码第二个url。