簡體   English   中英

有一個表單提交給兩個可能的不同控制者

[英]Have a form submit to two possible different controllers

我在網站上有以下表格

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

我想添加另一個名為“生成”的按鈕,該按鈕將與下面的表單傳遞相同的變量(start_date和end_date),但調用操作generate而不是run。 理想情況下,我希望不必具有兩個重復的表單。

任何幫助表示贊賞。

或者您可以將按鈕的onclick動作綁定在一起

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

使用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 ,但不會提交。 並在設置適當的表單操作后添加此類。

當我使用根據單擊哪個按鈕但具有相同表單操作的值來初始化隱藏表單字段時,這對我有用。 盡管您的情況可能是相同的。 希望這個方向對您有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM