2012-12-13 3 views
1

Railscast # 38과 함께 여러 제출 작업으로 formtastic 양식을 설정하려고합니다. 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에서 사용 된 코드가되었습니다. 당신이 양식을 제출하면 스트라이프 토큰이 체크 아웃 한 후이 커피 스크립트 기능이 발사됩니다 : 자바 스크립트 이후

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

$("#my_form_id")[0].submit()로 양식 제출을하고, 이름 매개 변수는 커밋 PARAMS에 이월되지 않습니다.

내 솔루션은 채워 숨겨진 필드를 ... A는 "클릭"클릭 된 버튼에 속성

$('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에 의존하는 것을 좋아하지 않는다. 어떤 비판이나 더 나은 해결책은 확실히 환영합니다 :)