我有一个典型的 CRUD 操作应用程序
apps/views/recipe/show.html.haml 包含一行
= link_to "Delete", recipe_path, method: :delete, data: {confirm: "Are you sure?" }, class: "btn btn-default"
如果我在 apps/views/recipe/new.html.haml 中创建一个新食谱并被重定向到 apps/views/recipe/show.html.haml 并点击删除,然后它给我一次确认并删除食谱。
但是,如果我从典型类型的index.html.haml转到链接到单个食谱的同一显示页面,例如http://localhost:3000/recipes/29然后点击删除按钮,确认会弹出3-4次..(除非我先刷新该页面,然后它只会弹出一次确认)。
我尝试添加 jQuery-turbolinks 但它仍然不起作用......
app/views/layouts/application.html.haml 在 %title 下有以下内容
= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true
= javascript_include_tag 'application', 'data-turbolinks-track' => true
= csrf_meta_tags
不知道如何修复它,以免它多次弹出
编辑:即使我通过传递@recipe修复代码后仍然有相同的行为
= link_to "Delete", recipe_path(@recipe), method: :delete, data: {confirm: "Are you sure?" }, class: "btn btn-default"
编辑2: 如果我将turbolinks全部删除,它会起作用,但Turbolinks可以使您的Web应用程序中的以下链接更快,据我所知,大多数Rails项目都使用Turbolinks。所以想看看是否有解决办法?看起来是一件非常典型的事情。
编辑3:
我添加了 jQuery-turbolinks
gem 文件
gem 'jquery-turbolinks'
JavaScript list 文件,按此顺序:
//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require turbolinks
确认信息仍然弹出不止一次。一定有办法解决吗?
编辑4: 我发现了问题。 HTML 中的 %head 位于 %html 的正下方,并且没有正确缩进,因此 application.js 和其他内容包含在正文中,而不是 head 部分,因此而不是
!!! 5
%html
%head
%title Recipe App
= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true
= javascript_include_tag 'application', 'data-turbolinks-track' => true
= csrf_meta_tags
应该是
!!! 5
%html
%head
%title Recipe App
= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true
= javascript_include_tag 'application', 'data-turbolinks-track' => true
= csrf_meta_tags
最佳答案
jquery-turbolinks 不应该是真正必要的;没有它我的应用程序可以正常工作...
您确定:
- 您有
javascript_include_tag ...
<head>
中的行您的 html 的一部分? - 你只有一个
javascript_include_tag ...
线?
背景:
您遇到的问题是,在每个 turbolinks 页面加载时都会调用 jquery_ujs 设置,从而导致安装重复的处理程序。
由于 turbolinks 页面加载只是替换 <body>
作为文档的一部分,您必须在 <body>
中执行某些操作触发jquery_ujs设置...
另请参阅以下答案:https://stackoverflow.com/a/18260585/211060和 https://stackoverflow.com/a/4475479/211060
关于jQuery-turbolinks - link_to 确认 : pops up several times times in Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29712972/