2017-04-04 30 views
1

我有一個頁面,可以激活停用用戶帳戶 - 但在激活之前,他們需要分配一個新密碼。目前我有兩個按鈕,執行以下操作:如何將動作調用附加到Rails中的提交按鈕?

在「添加密碼」形式的到底有此按鈕:

在頁面上
<%= f.submit %> 

稍遠一點有這個按鈕,這臺用戶狀態爲「活動」:

<%= standard_button 'Activate user', update_status_user_path(@user), 
:method => :patch %> 

如果可能,我想將第二個按鈕的功能添加到提交按鈕。

我不完全掌握表單和按鈕背後的魔法,所以我想知道這是否可能,如果是的話,我該如何實現這一點?

回答

0

您可以將按鈕想象成一個迷你表格。查看docs以獲取有關button_to rails方法的更多信息。

在你的form_for中,將會有一個url指定表單發佈到的位置。在該控制器方法中,可以包含將用戶狀態更新爲「活動」的邏輯。類似於

def some_method 
    user = User.find(params[:user_id]) 
    user.update_attribute(:status, "active") 
end 
+0

當前表單發佈到許多其他頁面也使用的密碼更改方法。所以如果可能的話,我寧願避免在特定方法中進行更改。不可能有一個按鈕做兩件獨立的事情 - 提交表單並調用一些操作? – Teresa

+0

或者我可能不太瞭解你的解決方案...... – Teresa

+1

表單只能發佈到一個動作,以便動作必須處理更新用戶狀態。你可以使用javascript來更新用戶狀態,但這不是可取的。另一種選擇是在表單中包含隱藏字段或數據屬性。然後該操作可以檢查隱藏字段並僅在隱藏字段存在時更新用戶狀態。或者,表單操作可以檢查請求來自哪裏,並且僅當請求來自特定頁面時才更新用戶狀態。 – margo

相關問題