jQuery-turbolinks - link_to 确认:在 Rails 中弹出几次
jQuery-turbolinks - link_to confirm: pops up several times times in Rails
我有一个典型的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 并点击删除,然后它给了我一次确认并删除了食谱。
但是,如果我从典型类型的索引转到相同的显示页面。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 它会起作用 butTurbolinks 使您的 web 应用程序中的以下链接更快,据我所知,它在大多数 Rails 项目中使用。所以想看看是否有解决方法?似乎是一件非常典型的事情。
编辑 3:
我添加了 jQuery-turbolinks
宝石文件
gem 'jquery-turbolinks'
JavaScript 清单文件,顺序为:
//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require turbolinks
确认弹出不止一次。必须有办法解决它吗?
编辑 4:
我发现了问题。 HTML 中的 %head 就在 %html 下面并且缩进不正确,所以 application.js 和其他部分包含在正文中而不是头部部分所以而不是
!!! 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
你应该将被删除的recipe
的id
作为参数传递给recipe_path
,大概如下:
= link_to "Delete", recipe_path(recipe), method: :delete, data: {confirm: "Are you sure?" }, class: "btn btn-default"
没有传递对象,我猜它正在删除很多记录。
也许您包含了 rails.js 的多个副本?
检查 this post 看看是否能解决您的问题。
jquery-turbolinks 真的没有必要;没有它我的应用程序可以正常工作...
您确定:
- 你的 html?
的 <head>
部分有 javascript_include_tag ...
行
- 你只有一个
javascript_include_tag ...
行?
背景:
您遇到的问题是 jquery_ujs 设置在每个 turbolinks 页面加载时被调用,导致重复的处理程序被安装。
由于 turbolinks 页面加载只是替换了文档的 <body>
部分,因此您必须在 <body>
中做一些触发 jquery_ujs设置...
另请参阅这些答案: and
我遇到了这个类似的问题并在发现错误后解决了:-
- 我有
layout
包括 application.js
- 我的
partial
再次包含 jquery.min
,它已经包含在 application.js
already included
中
- 我在几个 js 文件中使用了
getScript()
多次..每个事件应该只使用一次。
希望对您有所帮助。
我有一个典型的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 并点击删除,然后它给了我一次确认并删除了食谱。
但是,如果我从典型类型的索引转到相同的显示页面。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 它会起作用 butTurbolinks 使您的 web 应用程序中的以下链接更快,据我所知,它在大多数 Rails 项目中使用。所以想看看是否有解决方法?似乎是一件非常典型的事情。
编辑 3:
我添加了 jQuery-turbolinks
宝石文件
gem 'jquery-turbolinks'
JavaScript 清单文件,顺序为:
//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require turbolinks
确认弹出不止一次。必须有办法解决它吗?
编辑 4: 我发现了问题。 HTML 中的 %head 就在 %html 下面并且缩进不正确,所以 application.js 和其他部分包含在正文中而不是头部部分所以而不是
!!! 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
你应该将被删除的recipe
的id
作为参数传递给recipe_path
,大概如下:
= link_to "Delete", recipe_path(recipe), method: :delete, data: {confirm: "Are you sure?" }, class: "btn btn-default"
没有传递对象,我猜它正在删除很多记录。
也许您包含了 rails.js 的多个副本?
检查 this post 看看是否能解决您的问题。
jquery-turbolinks 真的没有必要;没有它我的应用程序可以正常工作...
您确定:
- 你的 html? 的
- 你只有一个
javascript_include_tag ...
行?
<head>
部分有 javascript_include_tag ...
行
背景:
您遇到的问题是 jquery_ujs 设置在每个 turbolinks 页面加载时被调用,导致重复的处理程序被安装。
由于 turbolinks 页面加载只是替换了文档的 <body>
部分,因此您必须在 <body>
中做一些触发 jquery_ujs设置...
另请参阅这些答案: and
我遇到了这个类似的问题并在发现错误后解决了:-
- 我有
layout
包括application.js
- 我的
partial
再次包含jquery.min
,它已经包含在application.js
already included
中
- 我在几个 js 文件中使用了
getScript()
多次..每个事件应该只使用一次。
希望对您有所帮助。