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 %>.
这里很好的答案,
但是,如果你做了所有的事情,仍然得到这些双重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/javascript
和app/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文件。 这个对我有用。