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

San*_*jay 3 jquery ruby-on-rails-3

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

<%= link_to "Delete", product, :method => :delete, :title => "Delete" %>
Run Code Online (Sandbox Code Playgroud)

这在HTML中看起来像这样:

<a href="/products/104" data-method="delete" rel="nofollow" title="Delete">Delete</a>
Run Code Online (Sandbox Code Playgroud)

这一直很好.

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

安装JQuery后,上面的"删除"链接中断.Rails尝试处理destroy动作,而不是处理动作!ProductsControllershow

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

<%= javascript_include_tag :defaults %>
Run Code Online (Sandbox Code Playgroud)

编辑:在JQuery安装期间的某些事情必须使得用于"伪造" DELETE请求的Javascript 不再起作用,从而导致show调用该操作.但究竟发生了什么我不知道......

有人有主意吗?谢谢.

Mic*_*ley 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" %>
Run Code Online (Sandbox Code Playgroud)

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