2010-03-13 20 views
2

Id喜歡能夠爲對象列表創建複選框。然後向用戶提供一些對所選對象執行的操作。即刪除,存檔等Rails - 使用複選框選擇多個對象並選擇要執行的動作

我知道瑞安的屏幕錄像,但它沒有解釋如何創建指向所選對象的多個動作的鏈接。它只是顯示他創建一個帶有url的form_tag到一個動作和一個提交按鈕。

+0

你能鏈接到瑞安的Screencast嗎? – Sukima 2012-02-29 15:29:19

+0

http://railscasts.com/episodes/17-habtm-checkboxes – gayavat 2012-03-17 17:34:24

回答

3

我認爲你可以用兩種方法做到這一點。

第一:你可以儘可能多的按鈕添加到你想要的一種形式:

<%= f.submit "Action 1" %> 
<%= f.submit "Action 2" %> 
<%= f.submit "Action 3" %> 

,他們都被提交到一個動作中,你可以檢查:

if params[:commit] == "Action 1" 
    do some stuff for action 1 
elsif params[:commit] == "Action 2" 
    do other stuff 
... and so on 
end 

另一種方式就是用一些js。例如,當用戶點擊按鈕「動作2」時,它會改變表單中的「動作」參數並將數據提交給此動作。

編輯: 在翻譯的網站的情況下,你可以這樣說:

<%= f.submit (I18n.t :action_1) %> 

和控制器:

if params[:commit] == I18n.t :action_1 
... 
end 

而且在en.yml加:

action_1: Action 1 

In pl.yml add:

action_1: Akcja 1 

等。

+0

如果您將您的代碼國際化,它不會工作:( – shingara 2010-03-13 11:08:11

+0

在控制器中,您還可以與翻譯的值進行比較,以解決您的問題;另一方面,解決這個問題的第二種方法,其中包括js是正確的國際化。 – klew 2010-03-13 11:51:21

1

您可以隨時更改提交按鈕的名稱。只需查找params [:button_name]而不是params [:commit]即可。

您需要在控制器中使用某種方法來處理update_many對象的能力。也許一個之前的過濾器調度...