安装JQuery时,为什么我的“删除”链接会中断?

时间:2010-09-04 02:53:17

标签: jquery ruby-on-rails-3

我有一个可以创建和删除产品的Rails 3应用程序。索引页面列出了所有产品。列表中每个产品旁边都有一个删除链接:

<%= link_to "Delete", product, :method => :delete, :title => "Delete" %>

在HTML中看起来像这样:

<a href="/products/104" data-method="delete" rel="nofollow" title="Delete">Delete</a>

这一直很好。

我已经达到了我想在我的应用程序中安装JQuery的程度。我按照几个网页上提供的步骤(例如thisthis,)。

安装JQuery后,上面的“删除”链接会中断。 Rails没有处理destroy中的ProductsController操作,而是尝试处理show操作!

我的猜测是,它与Web浏览器本身无法发送DELETE请求这一事实有关,因此Rails使用JavaScript“伪造”此类请求,这就是为什么我有以下行尝试JQuery安装之前:

<%= javascript_include_tag :defaults %>

编辑:JQuery安装期间的某些内容必须使得用于“伪造”DELETE请求的Javascript不再有效,从而导致调用show操作。但究竟发生了什么我不知道......

有人有什么想法吗?谢谢。

2 个答案:

答案 0 :(得分:6)

仔细检查您的JavaScript文件的包含顺序。具体来说,必须在jQuery Rails驱动程序之前加载jQuery(请参阅http://github.com/BinaryMuse/rails-book/blob/master/app/views/layouts/application.html.haml#L6-L7处的以下行):

<%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" %>
<%= javascript_include_tag "rails" %>

(这假设您使用http://github.com/rails/jquery-ujs/blob/master/src/rails.js中的jQuery驱动程序替换了rails.js中的内容。

答案 1 :(得分:0)

另外,请尝试包含更新版本的jquery,例如1.4.4:

<%= javascript_include_tag   
"http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js","rails" %>