2010-09-07 39 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请求,所以创建一个新操作来处理此行为可能是有意义的。