我有一個創建(和更新)材質的導軌形式。很明顯,默認情況下,當用戶登錄並且檢索到材料時,表單將使用更新操作進行呈現。但是,如果用戶想要保存其他版本的資料,我希望有一個「另存爲」操作。做到這一點的顯而易見的方法是有一個按鈕發送到'更新'在控制器和另一個發送到'新',但我不知道該怎麼做,因爲它似乎取決於form_for參數。如何從軌道形式設置兩個不同的動作?
更新
要避免使用Javascript我試圖改變的form_for網址:
<%= form_for @material, :url => choose_action_path do |f| %>
然後在控制我有:
def choose_action
if params[:save_as] == "Save As"
redirect_to :action => "create"
else
redirect_to :action => "update"
end
end
,但是這是行不通的。這是一種可以發揮作用的策略嗎?
聽起來像一個壞主意。如何僅在服務器端正確處理表單?您可以從一個控制器委派到任何需要的地方。這種形式在瀏覽器中很容易混淆。 – vector 2013-03-05 22:24:45
你可以添加一個複選框來知道用戶是否想創建一個新版本或保存實際版本。而在服務器端,只需檢查複選框是否已被選中並委託給適當的方法。 – TimPetricola 2013-03-05 22:27:29
通過重定向您將表單中發佈的所有數據都丟失。所以你的'choose_action'這個想法確實很瘋狂。 – Mischa 2013-03-06 13:09:43