2010-01-25 100 views
1

首先,我是Ruby on Rails的新手,所以如果有比我更好的做法,請告訴我。使用ajax提交多個按鈕

我想要做的是有多個ajax提交按鈕來執行不同的行動,用複選框項目列表不同。所以,當我選擇儘可能多的複選框時,我可以選擇如何處理它們。

如下我可以部分解決這個用ajax:

remote_form_for :profile, :url => {:controller => 'announcements', :action => 'deactivate'}, :html => { :method => :put} do |f| 
     f.submit 'Publish', :confirm => 'Are you sure?' 
#Then the list 

這個偉大的工程。我現在想要做的是添加另一個「提交」或按鈕,所以我可以執行多個操作,所以我猜想remote_form_for上的:url語句將被替換爲每個按鈕的那樣。例如:

發佈按鈕:在某些控制器中執行某些操作。 取消激活按鈕:執行其他操作。 標記爲已讀:執行另一個操作。

是否清楚?

回答

4

添加儘可能多的「提交」,只要你喜歡。所有提交的輸入標籤中的'名稱'設置爲'提交',並將值設置爲標籤。在控制器

def deactivate 

    case params[:commit] 
    when 'Publish' then do something 
    when 'Something Else' then do something else 

    end 

end 
+0

謝謝。我已經讀過這對於IE編寫的IE不起作用。我猜想還需要其他東西,比如提交按鈕的name屬性或別的東西。你知道那是什麼嗎? – 2010-01-25 16:26:34

+0

您可以輕鬆地覆蓋該名稱。 f.submit「Something Else」,:name =>'somethingelse'。然後只是檢查params [:somethingelse] – ffoeg 2010-01-25 16:40:13

+0

我不能得到這個工作。當我點擊「Something Else」提交按鈕時,在參數中我會得到「發佈」一個,而不是......爲什麼? – 2010-01-25 17:08:25

2

最後

remote_form_for :profile, :url => {:controller => 'announcements', :action => 'deactivate'}, :html => { :method => :put} do |f| 
     f.submit 'Publish', :confirm => 'Are you sure?' 
     f.submit 'Something Else" 
# Then the list 

,我可以獨自解決這個問題:所以,你可以通過查看提交的PARAMS檢查。

衆所周知,Ajax表單上的多個提交按鈕存在一個錯誤。我使用瞭解釋爲here的隱藏解決方法。

感謝, 布賴恩