Cod*_*ack 15 jquery ruby-on-rails turbolinks ruby-on-rails-4
我有一个典型的CRUD操作应用程序
包含一行的apps/views/recipe/show.html.haml
= link_to "Delete", recipe_path, method: :delete, data: {confirm: "Are you sure?" }, class: "btn btn-default"
Run Code Online (Sandbox Code Playgroud)
如果我在apps/views/recipe/new.html.haml中创建一个新配方并重定向到apps/views/recipe/show.html.haml并点击Delete,那么它会给我一次确认并删除配方.
但是,如果我从典型类型的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
Run Code Online (Sandbox Code Playgroud)
不知道如何解决它,所以它不会弹出几次
编辑:即使我通过传递@recipe修复代码后仍然是相同的行为
= link_to "Delete", recipe_path(@recipe), method: :delete, data: {confirm: "Are you sure?" }, class: "btn btn-default"
Run Code Online (Sandbox Code Playgroud)
编辑2: 如果我一起删除turbolinks它的工作原理buttTurbolinks在你的web应用程序中更快地生成以下链接,据我所知在大多数Rails项目中使用.所以试着看看是否有解决方法?看起来像是一件非常典型的事情.
编辑3:
我添加了jQuery-turbolinks
的Gemfile
gem 'jquery-turbolinks'
Run Code Online (Sandbox Code Playgroud)
JavaScript清单文件,按此顺序:
//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require turbolinks
Run Code Online (Sandbox Code Playgroud)
确认不止一次弹出.必须有办法解决它?
编辑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
Run Code Online (Sandbox Code Playgroud)
它应该是
!!! 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
Run Code Online (Sandbox Code Playgroud)
jquery-turbolinks不应该是必要的; 没有它我的应用程序正常工作......
你确定:
javascript_include_tag ...行<head>吗?javascript_include_tag ...线?背景:
您遇到的问题是在每个turbolinks页面加载时都会调用jquery_ujs设置,导致安装重复的处理程序.由于turbolinks页面加载只是替换文档的一部分,你必须在你的内部做一些事情触发jquery_ujs设置......<body><body>
另请参阅以下答案:https://stackoverflow.com/a/18260585/211060和/sf/answers/313283561/