【发布时间】:2011-11-24 15:56:10
【问题描述】:
<%=link_to 'Add note', {:controller => 'home', :action => 'add_note', :id =>user.id}, :remote => true%>
点击此链接后称为页面_add_note.html.erb(通过JS add_note.js.erb)。该文件如下所示:
$('div#ajax_div').html("<%= escape_javascript(render('add_note')) %>");
看起来不错,点击上面的链接后加载到ajax_div文件_add_note.html.erb的一个内容。
但问题是,点击我在 Firebug 中看到的链接后,ajax 调用被处理了两次。
GET /home/add_note?id=39 200 OK 601ms
GET /home/add_note?id=39 200 OK 1154ms
这怎么可能?有什么问题?
【问题讨论】:
-
所有其他 javascript 和 Ajax 行为是否正常?也许您以某种方式包含了 rails.js 两次,将链接处理程序分配了 2 次?
-
实际上,我不明白 Rails 3.1 中的资产是如何工作的。因为在 /app/assets/javasripts 我只有文件 application.js,它是空的,在 application.html.erb 我有 。如果我查看 HTML 页面的来源,我会看到 和 。但在我的目录中,这些文件不是。
-
查看 the assets pipeline 上的文档,这是 Rails 3.1 的新内容。 jQuery 和 UJS javascripts 通过 gems 包含,可以在您的
Gemfile中看到。但不幸的是,如果您看到的所有 javascript 包含是这两个文件,则可能不是任何处理程序被包含 2x 的问题。 -
这很奇怪......相同的代码在 Rails 3 的项目中运行良好。
标签: javascript ajax ruby-on-rails-3 jquery ruby-on-rails-3.1