<%=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
这怎么可能?可能出了什么问题?
最佳答案
这可能与 Assets 管道有关,尽管 asset pipeline documentation在这里不是很有用。您可能在资源路径中包含了两次 application*.js.* 。运行:
$ find . -name "application*.js*"
./app/assets/javascripts/application.js
./public/assets/application.js
./public/assets/application-5f5e14d05ab99cac084b66cb87bbeec8.js
./public/assets/application-5f5e14d05ab99cac084b66cb87bbeec8.js.gz
./public/assets/application-95fca227f3857c8ac9e7ba4ffed80386.js.gz
./public/assets/application-95fca227f3857c8ac9e7ba4ffed80386.js
./public/assets/application.js.gz
如果您看到如上图片,请从 public/assets
中删除生成的资源。
关于javascript - Rails 3.1 - 调用 AJAX 请求两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8259669/