link_to:确认显示两次popup

这个标签与导轨3

<%= link_to 'Destroy', item, :method => :delete,:confirm=>'Are you sure?' %> 

产生这个html

 <a href="/news/3" data-confirm="Are you sure?" data-method="delete" rel="nofollow">Destroy</a> 

该条目被删除,问题是popup两次出现。

什么可能导致这个?

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

你可能会意外地通过重复的javascript_include_tag helper包含rails.js的两个副本吗?

我也遇到了同样的问题,花了一个多小时的时间仔细观察。 我发现了一个解决scheme,我想我会分享它的情况下,以帮助…

我的问题是,我有

 config.assets.debug = true 

config / environments / development.rb中

将该行更改为

 config.assets.debug = false 

为我确定了重复确认。 我在这个导轨指南中find了资产pipe道的相关信息。 希望能帮助到你!

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

有了Rails4和Turbolinks,碰巧:

  • 一切正常页面的第一次加载(确认popup窗口只出现一次)
  • 访问另一个页面 – >popup窗口出现两次
  • 再访问​​一个页面 – >popup窗口发生三次
  • 等等
  • 直到我重新加载页面。

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

我正在使用Rails 4,但没有答案为我工作,但以下工作…我改变了行:

 <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> 

 <%= javascript_include_tag 'application', 'data-turbolinks-eval' => false %>. 

https://github.com/rails/turbolinks/issues/244

这里很好的答案,

但是,如果你做了所有的事情,仍然得到这些双重popup窗口,并且如果你正在开发模式下运行,检查是否有public/assets加载了编译资产。

删除public/assets/*解决了这个问题。

这似乎是一个在Rails中的错误。 显然,application.js中的指令不仅在启用debugging模式时扩展为单个文件,还包含在application.js中。 我没有看过这个Rails代码,但认为这是由于application.js是默认的JavaScript文件。 如果你把这个文件重命名为default.js,它将在debugging模式下正确地包含由指令指定的文件,而default.js将只输出只在该文件中的JavaScript。 因此不会生成重复的代码。

例:

的application.js

// =需要jquery_ujs

FOO();

结果是:

1)jquery_ujs.js

2)jquery_ujs内容和foo()的application.js


default.js

// =需要jquery_ujs

FOO();

结果是:

1)jquery_ujs.js

2)使用foo()的default.js

我在Rails 3.2.12中遇到了同样的问题,但是简单地升级到3.2.13就解决了这个问题。

在我的情况下(Rails 3.2.13),我不得不删除rails.js来解决同样的问题。

我没有明确引用rails.js,也没有改变config.assets.debug的帮助。

在我的情况下,jQuery被加载了两次,因为//= require_tree .

为了防止在application.js和application.css中的这个错误,我用来创build一个子目录app/assets/javascript/autorequire而不是require_tree . 我做了require_tree ./autorequire

所以, app/assets/javascriptapp/assets/stylesheets中的文件不会自动/意外地包括在内。 我把我所有的个人.css和.js文件放到子目录中,它们被隐式地包含在内。 但是我可以定义从顶级path的哪些文件将被包括在内以及以何种顺序。

既然我这样做了,我从来没有因为资产没有按照我预期的那样加class而遇到麻烦。

所以对我来说,这是因为我定义了数据远程而不是远程。

IE

data:{remote:true,…}

代替

remote:true,data:{…}

希望有所帮助。

就我而言,应用程序包含“mootools ujs”和“jquery ujs”。 我摆脱了一辆摩托车,现在我只能看到一个确认。

只要删除turbolinks,这在rails4中为我工作

尝试运行

 rake assets:precompile ENV=development 

要么

 rake assets:precompile ENV=production 

删除:

 //= require jquery //= require jquery_ujs //= require_tree . 

app/assets/javascripts/application.js 。 尽pipe已经评论它加载这些js文件。 这个对我有用。