我正在嘗試在爲產品創建對象之前實現「預覽」功能。我遵循Ryan Bates的railscast,在這個過程中,他通過傳遞參數:name來提交按鈕。以導軌形式提交多個提交按鈕
<%= submit_tag 'Preview', :name => 'preview_button' %>
然而,這不是在我的情況下工作,不知道爲什麼,可能是因爲我使用的是軌道3,我也說不上來,但我看不出有什麼變化時,我補充一下:名字=>'preview_button'與提交按鈕。任何人都可以向我推薦解決方案
我正在嘗試在爲產品創建對象之前實現「預覽」功能。我遵循Ryan Bates的railscast,在這個過程中,他通過傳遞參數:name來提交按鈕。以導軌形式提交多個提交按鈕
<%= submit_tag 'Preview', :name => 'preview_button' %>
然而,這不是在我的情況下工作,不知道爲什麼,可能是因爲我使用的是軌道3,我也說不上來,但我看不出有什麼變化時,我補充一下:名字=>'preview_button'與提交按鈕。任何人都可以向我推薦解決方案
您需要添加兩個提交按鈕以不同的名稱
<%= 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
添加保羅的回答,它可能是更好的途徑基於提交參數的不同動作。
我們在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。
請包括您正在使用的控制器代碼。 – 2011-03-27 22:48:32
這是什麼railscast? – digitalWestie 2011-05-13 12:51:40