2010-09-04 62 views
3

我有一个可以创建和删除产品的Rails 3应用程序。索引页面列出了所有产品。接下来到列表中的每个产品是删除链接:安装JQuery时,为什么我的“删除”链接会中断?

<%= 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尝试处理show操作,而不是处理ProductsController中的destroy操作!

我的猜测是,它是与事实,即Web浏览器不能发送DELETE请求本身,所以Rails的“假货”这样的请求使用JavaScript,这就是为什么我有以下行在尝试之前JQuery的安装:

<%= javascript_include_tag :defaults %> 

编辑:JQuery的过程中安装的东西必须使它使得JavaScript中使用这个“假”的DELETE请求不再起作用,导致show动作被调用。但究竟什么是发生的事情,我不知道......

人有什么想法?谢谢。

+0

你把jQuery的驱动程序[文件](http://github.com/rails/jquery-ujs/ tree/master/src /)在'javascripts /'文件夹内?你还在布局中添加了两个“csrf- *”元标记吗? – Anurag 2010-09-04 03:12:06

+0

是的,我做了这两件事... – Sanjay 2010-09-04 03:25:32

回答

6

仔细检查被包含JavaScript文件的顺序。具体而言,jQuery的必须在jQuery的Rails的驱动程序之前(见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" %> 

(这里假设你用jQuery的司机从http://github.com/rails/jquery-ujs/blob/master/src/rails.js替换的内容中rails.js)。

+0

谢谢,BinaryMuse。我试过这个,它工作。 JS的顺序非常重要。 – Sanjay 2010-09-05 23:30:15

0

另外,尽量包括jQuery的较新版本,如1.4.4:

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