link_to:确认显示两次弹出窗口

use*_*731 55 ruby-on-rails

这个标签带有导轨3

<%= link_to 'Destroy', item, :method => :delete,:confirm=>'Are you sure?' %>
Run Code Online (Sandbox Code Playgroud)

产生这个HTML

<a href="/news/3" data-confirm="Are you sure?" data-method="delete" rel="nofollow">Destroy</a>
Run Code Online (Sandbox Code Playgroud)

该条目被删除,问题是弹出窗口出现两次.

可能是什么导致了这个?

BMB*_*BMB 76

我遇到了同样的问题,花了大约一小时的时间来研究它.我在我的情况下找到了一个解决方案,我想我会分享它以防万一...

我的问题是我有

config.assets.debug = true 
Run Code Online (Sandbox Code Playgroud)

config/environments/development.rb中

将该行更改为

config.assets.debug = false
Run Code Online (Sandbox Code Playgroud)

为我修复了确认复制品.我在此rails指南中找到了资产管道的相关信息.希望能帮助到你!

  • 只想添加,就像任何其他环境配置一样,这也需要我重启我的rails服务器.(以防有人因此而被绊倒). (12认同)
  • 同样在这里.我发现如果从开发服务器删除编译资产,我可以保留调试. (7认同)
  • 我认为对答案的@ tybro0103评论有更好的解决方案。有很多方法可以解决Rails中的每个问题,而且在很多时候,将某些配置设置为false太容易了,但这不是正确的方法。发生此错误是有原因的,并且关闭仅解决问题的方法并不总是一个好的解决方案。如果确实需要将config.assets.debug设置为true怎么办?我确实认为这是Rails中的错误,因此也许没有正确的解决方案,但是删除将重新生成的代码似乎比关闭可能会在以后引起问题的东西更好。 (2认同)

Sco*_*ott 75

这听起来像rails.js中的确认处理程序Javascript被连接两次.

您是否可能通过复制javascript_include_tag帮助程序意外地包含两个rails.js副本?

  • 在Rails 5上,`rails-ujs`完成了这项工作,因此将它与`jquery_ujs`一起使用会导致同样的问题.保持其中一个. (10认同)
  • @Tony如果你使用Rails 3.1或更高版本,rails.js被资产管道中的jquery.js和jquery_ujs取代 (6认同)
  • 对于我在Rails 4上,Turbolinks多次重新绑定jQuery事件处理程序.使用jquery.turbolinks修复了问题:https://github.com/kossnocorp/jquery.turbolinks/blob/master/README.md (2认同)

Noc*_*ell 44

我已经习惯javascript_include_tag在haml-layout-file的底部包含它.

使用Rails4和Turbolinks它会发生:

  • 第一次加载页面时一切正常(确认弹出窗口仅出现一次)
  • 访问另一个页面 - >弹出两次
  • 再访问​​一个页面 - >弹出三次
  • 等等
  • 直到我重新加载页面.

我通过javascript_include_tag从底部移动来解决问题<head>

  • 就是这个!Turbolinks不会重新加载整个页面,它只会重新加载正文,标题(和其他一些东西),但由于我的javascripts在体内 - 这些被重复应用多次!谢谢你,Nockenfell! (7认同)

小智 5

我从另一篇文章复制了这个解决方案,但这对我有用(rails 5)

“从 application.js 中删除 jquery_ujs,因为rails_ujs 对于更高版本的 Rails 来说已经足够了。”

我已经包括: //= require jquery //= require jquery-ujs //= require rails-ujs

删除后一切正常。解决方案来自:为什么我在 Rails 中收到两次 JQuery 警报?