2012-12-13 56 views
1

我試圖設置一個formtastic形式的多個提交操作,跟隨Railscast#38。 Formtastic中的這個相當於什麼?與formtastic多個提交操作

<%= submit_tag 'Create' %> 
<%= submit_tag 'Preview', :name => 'preview_button' %> 

This post給了我希望,但它看起來像commit_button在2.1.0過時,我似乎無法找出新的語法。

這是我的代碼,它是值得的。我想每一個提交按鈕轉到同一個控制器,在這裏我將以不同的方式處理它們:

# Use prepaid credits to checkout 
<%= f.action :submit, :as => :button, :label => "Order Critique (1 credit will be spent)", :button_html => { :class => "btn btn-primary", :disable_with => 'Processing...' } %> 
# Use credit card to checkout 
<%= f.action :submit, :as => :button, :label => "Order Critique ($10)", :button_html => { :class => "btn btn-primary", :disable_with => 'Processing...' } %> 

回答

0

TL; DR:如果使用JavaScript提交表單,它不會在攜帶在提交參數中提交按鈕的名稱。

我的問題最終成爲Railscasts第288集中使用的代碼。當您提交表單這CoffeeScript的功能被炒魷魚,條紋令牌檢出後:

handleStripeResponse: (status, response) -> 
    if status == 200 
    $("#stripe_card_token").val(response.id) 
    $("#my_form_id")[0].submit() 
    else 
    # other stuff 

由於Javascript做表單提交與$("#my_form_id")[0].submit(),name參數將不提交PARAMS結轉。

我的解決辦法是添加一個「點擊」屬性到被點擊的按鈕......

$('form_input[type=submit]').click -> 
    $('input[type=submit]', $(this).parents('form')).removeAttr('clicked') 
    $(this).attr('clicked', 'true') 

..和再搶點擊的按鈕的id屬性填充隱藏字段與它:

submitter = $("input[type=submit].clicked=true").attr("id") 

我不是特別喜歡這個解決方案。這感覺就像我的js知道太多了,我不喜歡依賴於js這種事情。任何批評或更好的解決方案肯定是受歡迎的:)