6

我在生产服务器中遇到问题。这是另一个问题的重复,但所有这些问题的答案都对我不起作用。

我对 'link_to' 标签使用了 'delete' 方法:-

<%= link_to "Delete Campaign", campaign_path(campaign), :class => "btn btn-danger", :method => :delete, :confirm => 'Are you sure?'%>

当我点击“删除广告系列”链接时,我会弹出两次确认消息。这仅在客户端的生产环境中发生。

使用 Ruby 1.9.2 和 Rails 3.2.13。

在我的 gemfile 中,我使用了:-

gem 'jquery-rails'

在我的 application.js 中:-

//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require bootstrap-timepicker
//= require_tree ../../../vendor/assets/javascripts/

在我的 application.html.erb 中:-

<%= javascript_include_tag "application" %>
<%= javascript_include_tag "http://code.jquery.com/ui/1.10.2/jquery-ui.js" %>

当我搜索它时,我发现:-
1. config.assets.debug 在 production.rb 中应该是 false (它是 false 但不起作用)
2. 应该没有 public/assets 目录(应用程序中没有这样的目录)
3 . 运行 rake assets:clean on production (无影响)
4. 这两行应该从 application.js 中删除:-
//= require jquery
//= require jquery_ujs

最后一个对我有用,但是在删除这些行之后,整个应用程序都受到了影响,并且所有 jquery 事件都停止了工作。

据我所知,要么 jquery 加载两次(但使用的 javascript_include_tag 不超过一个),要么在“config.assets.compile”中存在问题,这在 production.rb 中是正确的

我也无法在我的本地和 heroku 上检查它,因为它对两者都很好。

我的供应商/资产/javascripts 中的文件列表:-

  • 引导程序.js
  • 引导-datepicker.js
  • 柴.js
  • jQuery-cookie.js
  • mocha.js
  • 时刻.js
  • 要求.min.js
  • 文本.js
  • 下划线-amd.js
4

2 回答 2

1

我正在使用 Rails 4,除了这个之外,我在 SO 上找到的答案都没有对我有用...我更改了 application.html.erb 中的行:

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

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

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

于 2015-03-18T20:14:55.693 回答
1

我在开发环境(使用 Rails 3.2.13)中遇到了同样的问题。我正在使用以下 gem 版本(来自 Gemfile.lock):bootstrap-sass (2.3.1.0)、sass-rails (3.2.6)、jquery-rails (2.2.1)。在 app/assets/javascripts/application.js 中:

//= require jquery  
//= require jquery_ujs  
//= require bootstrap  
//= require_tree  

在 application.html.erb 中:

<%= javascript_include_tag "application" %>  

在我的 erb 模板中:

<%= button_to 'Delete', @card_type, method: :delete, form_class: 'destroy_button',  
data: { confirm: "Are you sure?" } %>  

似乎 input[data-confirm] 的处理程序被添加了两次,一次是需要 jquery_ujs,另一次是需要引导程序。我通过不需要 jquery-ujs 消除了确认警报的双重触发,但我希望其他人发布更令人满意的解决方案。

于 2013-05-11T18:43:31.960 回答