Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将表单提交给两个可能不同的控制器_Javascript_Jquery_Ruby On Rails_Forms - Fatal编程技术网

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。