2010-09-07 71 views
2

我想執行一個簡單的事情。當用戶單擊鏈接時,jQuery需要生成一個Ajax請求,該請求將鏈接項的ID發送到控制器中的方法。基本上我想要一個漂亮的模態對話窗口,當用戶點擊刪除鏈接。該窗口需要包含有關已刪除項目的各種信息。 例如 <%= link_to "Delete", item, :id => "delete" %>在Rails中調用jQuery ajax?

我可以選擇這個鏈接與jquery甚至打開彈出對話框,當用戶點擊它。通過application.js,但我真正需要的是jQuery在單擊鏈接時調用我的方法,在我的方法中,我將通過format.js來回答。在js文件中,我將代碼顯示爲具有所需參數的模式對話框。所有這些行爲都是通過ajax課程不同步的。 我無法生成控制器中的方法的ajax請求。不知道如何處理jQuery.ajax方法,尤其是如何強制jQuery將url參數傳遞給rails方法。我觀看了railscast,並使用.post研究了該示例,但我不需要提交任何表單。 任何意見表示讚賞。 謝謝

回答

6

Rails希望有一個帖子,並帶有一個隱藏的參數。

$('#delete').click(function(e){ 
    e.preventDefault(); 
    $.post($(this).attr('href'), { _method: 'delete' }); 
}); 
+0

謝謝,這很有幫助! – Dennis 2010-09-08 12:25:49

1

Rails 3中有這樣使用jQuery插件的一個不顯眼的方式:

http://github.com/rails/jquery-ujs 

一旦你有一個加載到你的佈局(與jQuery 1.4.1或更高版本),你可以做互動這很容易。

<%= link_to 'delete', item, :remote => true, :method => :delete, 
     :confirm => 'Are you sure?' %> 

在Rails 3中,所有這些都是爲鏈接添加一些HTML屬性。這些被jQuery插件中的活處理程序捕獲。這很容易在Rails 2應用程序使用此行爲,但:

<%= link_to 'delete', item, :'data-remote' => true, :'data-method' => :delete, 
     :'data-confirm' => 'Are you sure?' %> 

請注意,您需要擁有jQuery插件,在您的視圖加載。

http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

如果需要的初始響應是一個模式,而不是一個警告,你可以做第一個鏈接簡單一點:

<%= link_to 'delete', modal_confirm_item_url(item), :'data-remote' => true %> 

你可以鏈接到一些預先存在的成員行動。或者,因爲您最終可能希望使用來自這些操作的.js響應來服務其他ajax請求,所以創建一個新操作來處理此行爲可能是有意義的。