应用/视图/配方/ 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,然后点击Delete,然后它给我一次确认并删除配方.
但是,如果我从与各种配方(如http://localhost:3000/recipes/29)连接的典型类型的index.html.haml进行相同的显示页面,然后点击删除按钮,则确认将弹出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),class: "btn btn-default"
编辑2:
如果我一起删除turbolinks它工作buttTurbolinks使您的Web应用程序中的以下链接更快,据我所知,在大多数Rails项目中使用.所以试着看看是否有工作?似乎是一个非常典型的事情,能够做到.
编辑3:
我添加了jquery-turbolinks
的Gemfile
gem 'jquery-turbolinks'
JavaScript清单文件,按此顺序:
//= require jquery //= require jquery.turbolinks //= require jquery_ujs //= require turbolinks
确认弹出不止一次.必须有办法解决它?
编辑4:
我发现了这个问题.哈姆尔的%头在正确的%html下,没有缩进,所以application.js和其他被包括在身体,而不是头部,所以而不是
!!! 5 %html %head %title Recipe App = stylesheet_link_tag 'application','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','data-turbolinks-track' => true = csrf_Meta_tags
解决方法
你确定:
>你有< head>中的javascript_include_tag …行你的html的一部分?
>你只有一个javascript_include_tag …行?
背景:
你所遇到的问题是jquery_ujs设置是在每个页面加载的页面上调用的,导致安装了重复的处理程序.
由于一个涡轮页面加载只是替换了< body>文件的一部分,您必须在< body>这会触发jquery_ujs设置... 另见这些答案:https://stackoverflow.com/a/18260585/211060和https://stackoverflow.com/a/4475479/211060