2

我正在使用 JQuery 1.4.4 和 jQuery UJS rails.js ( https://github.com/rails/jquery-ujs )制作 Ruby On Rails 3.0.3 应用程序

我有脚手架生成的模型/视图/控制器 - 文档,我在 app/views/documents/index.html.haml 文件中删除了链接:

link_to "delete", document, :confirm => "Are you sure?", :method => :delete

这会生成这个 HTML:

<a href="/documents/1" data-confirm="Are you sure?" data-method="delete" rel="nofollow">Destroy</a>

这看起来很不错。

当我单击此“销毁”链接时,我会看到浏览器确认(),当我单击取消时,我希望什么都不会发生。

删除功能发生并且文档被删除。

有没有人有同样的问题或者我做错了什么?

目前我已经挖掘了这么远:

我查看了jquery-ujs rails.js 并且有两个.live()事件附加到同一个锚点:

1) $('a[data-confirm],input[data-confirm]').live('click', function () {...}

2) $('a[data-method]:not([data-remote])').live('click', function (e){...}

首先 live() 执行return false; 据我了解,这应该会阻止所有执行链,但事实并非如此。第二个live()仍然执行,第二个live()是生成表单并提交销毁操作的地方。

4

5 回答 5

6

升级到最新的 rails.js(用于 jQuery)应该可以解决这个问题。

https://github.com/rails/jquery-ujs/raw/master/src/rails.js

于 2010-12-18T23:47:32.940 回答
2

您还应该确保您的 rails.js 链接位于您的 jquery 链接之后。我有 <%= javascript_include_tags "rails", "jquery" ....%> 并且它需要 rails 位于末尾。rails.js 使用了许多由 jquery 创建的函数,因此需要在调用 rails 之前对其进行初始化,以便可以使用它们。

于 2011-02-05T22:22:04.493 回答
1

我还不能投票,但我的问题与上面的大卫相同。确保 rails.js 出现在您的 jquery 链接之后。那并且您的 application.html.erb 文件中的 CSRF 标记也像这样:

应用程序.html.erb

  <head>
<title><%= title %></title>
<%= render 'layouts/stylesheets' %>
<script src="http://jquery.com/src/jquery-latest.js"></script>
<%= javascript_include_tag :defaults %>
<%= javascript_include_tag :all %>
<%= csrf_meta_tag %>

有关 CSRF 的更多信息: http ://www.themodestrubyist.com/2010/02/24/rails-3-ujs-and-csrf-meta-tags/

于 2011-07-07T03:52:42.307 回答
0

我有类似的错误。

首先,您需要使用 button_to 来获取删除所需的 POST 操作。

其次,您需要确保jquery-ujs(https://github.com/rails/jquery-ujs/raw/master/src/rails.js)所需的jquery版本是您正在使用的版本。最新版本的 jquery-ujs 需要 jquery-1.6.0 或更高版本。我使用的是旧版本。

于 2011-08-08T00:42:05.927 回答
0

使用 Javascript 生成删除链接的 HTML 时,除了 data-method="delete" 之外,不要忘记 data-remote="true" 属性

于 2011-09-08T22:47:56.420 回答