2011-03-27 101 views
0

我正在嘗試在爲產品創建對象之前實現「預覽」功能。我遵循Ryan Bates的railscast,在這個過程中,他通過傳遞參數:name來提交按鈕。以導軌形式提交多個提交按鈕

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

然而,這不是在我的情況下工作,不知道爲什麼,可能是因爲我使用的是軌道3,我也說不上來,但我看不出有什麼變化時,我補充一下:名字=>'preview_button'與提交按鈕。任何人都可以向我推薦解決方案

+0

請包括您正在使用的控制器代碼。 – 2011-03-27 22:48:32

+0

這是什麼railscast? – digitalWestie 2011-05-13 12:51:40

回答

0

您需要添加兩個提交按鈕以不同的名稱

<%= submit_tag 'Submit', :name => 'submit_button' %> 
<%= submit_tag 'Preview', :name => 'preview_button' %> 

然後在你的控制器,你需要檢查的參數:

if params[:commit] == "Submit" 
# do great stuff 
end 
if params[:preview] == "Preview" 
# preview great stuff 
end 
3

添加保羅的回答,它可能是更好的途徑基於提交參數的不同動作。

我們在rails中使用advanced constraints解決了。

這個想法是有相同的路徑(因此相同的命名路線&行動),但約束路由到不同的行動。

resources :plan do 
    post :save, constraints: CommitParamRouting.new("Propose"), action: :propose 
    post :save, constraints: CommitParamRouting.new("Finalize"), action: :finalize 
end 

CommitParamRouting是一個簡單的類,它有一個方法matches?如果提交PARAM給定的情況下ATTR匹配返回true。值。

這是一個寶石commit_param_matching