我有一个可以创建和删除产品的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的程度。我按照几个网页上提供的步骤(例如this或this,)。
安装JQuery后,上面的“删除”链接会中断。 Rails没有处理destroy
中的ProductsController
操作,而是尝试处理show
操作!
我的猜测是,它与Web浏览器本身无法发送DELETE
请求这一事实有关,因此Rails使用JavaScript“伪造”此类请求,这就是为什么我有以下行在尝试JQuery安装之前:
<%= javascript_include_tag :defaults %>
编辑:JQuery安装期间的某些内容必须使得用于“伪造”DELETE
请求的Javascript不再有效,从而导致调用show
操作。但究竟发生了什么我不知道......
有人有什么想法吗?谢谢。
答案 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" %>