1

我从 Bootstrap 2.3.2 升级到 3,现在我的下拉菜单不再工作。我已经尝试为 Heroku 重新编译我的资产,并且在过去的几天里我的编码时间一直在用头撞墙。一切都在开发中有效,但在生产中无效。以下是相关文件:

宝石文件:

    source 'https://rubygems.org'
ruby '2.0.0'

gem 'rails', '4.0.0'
gem 'bcrypt-ruby', '3.0.1'
gem 'faker', '1.1.2'
gem 'will_paginate', '3.0.4'
gem "will_paginate-bootstrap"

gem 'bootstrap-sass', github: 'thomas-mcdonald/bootstrap-sass'

group :development, :test do
  gem 'sqlite3', '1.3.8'
  gem 'rspec-rails', '2.13.1'
  gem 'guard-rspec', '2.5.0'
  gem 'spork-rails', '4.0.0'
  gem 'guard-spork', '1.5.0'
  gem 'childprocess', '0.3.9'
end

group :test do
  gem 'selenium-webdriver', '2.35.1'
  gem 'capybara', '2.1.0'
  gem 'factory_girl_rails', '4.2.1'
end

gem 'sass-rails', '~>4.0.1'
gem 'uglifier', '2.1.1'
gem 'coffee-rails', '4.0.0'
gem 'jquery-rails', '~>3.0.4'
gem 'turbolinks', '1.1.1'
gem 'jbuilder', '1.0.2'

group :doc do
  gem 'sdoc', '0.3.20', require: false
end

group :production do
  gem 'pg', '0.15.1'
  gem 'rails_12factor'
  gem 'rails_serve_static_assets'
end

应用程序.js:

//= require bootstrap
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .

如果我将 //= 要求引导低于 jquery 或 jquery_ujs 要求,则 js 会在开发中中断。

生产.rb:

  config.cache_classes = true

  config.eager_load = true

  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true

  config.serve_static_assets = true

  config.assets.js_compressor = :uglifier

  config.assets.compile = true

  config.assets.digest = true

  config.assets.version = '1.0'

  config.force_ssl = true

  config.log_level = :info

  # Precompile additional assets.
  # application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
  # config.assets.precompile += %w( search.js )

  config.i18n.fallbacks = true

  # Send deprecation notices to registered listeners.
  config.active_support.deprecation = :notify


  # Use default logging formatter so that PID and timestamp are not suppressed.
  config.log_formatter = ::Logger::Formatter.new

我错过了什么?

4

3 回答 3

1

听起来像是资产管道问题。我会在本地预编译资产,确保将它们全部删除,推送到 git,然后再次编译并推送到 git。您的网络浏览器的控制台中是否有任何错误?这个问题似乎出现了很多,你可能想看看这些:

twitter bootstrap下拉突然不起作用

Javascript 功能在 localhost 上工作,但在部署到 Heroku 时不工作

rails precompile 为什么javascript不能在本地工作,但在heroku它可以工作

Rails custom.css 在部署到 Heroku 时不起作用

于 2013-10-17T04:25:38.633 回答
1

看起来我的标题中有些东西搞砸了,我的资产被调用了两次。

为了后代的利益,我能够通过在 localhost 上显示我的页面源代码来确定这一点。在 Heroku 上它是不可见的,因为它只显示预编译的 .js 文件。在 localhost 上显示我的页面源代码,我可以看到所有内容,包括 dropdown.js,都显示了两次。我修复了对我的资产的双重调用,并且 javascript 再次开始在 Heroku 上工作。

我当然希望我早点看到它,因为我花了 3 个晚上的编码时间与它搏斗,查看我能找到的每个来源都告诉我应该工作的代码,但它仍然没有工作!

于 2013-10-25T01:59:21.927 回答
0

我仍在使用 Rails 3,但在更新到 Bootstrap 3 后,我的下拉菜单也出现了同样的问题,而且它们似乎也取决于我在 application.js 文件中放置 //=require bootstrap 的顺序。

我解决这个问题的方法是手动安装 Bootstrap 文件,只是将 css 和 js 文件安装到它们各自的文件夹中,然后从我的 application.js 文件中删除 //=require bootstrap 行,并从我的 application.css 中删除 *=require bootstrap文件。

我还确保我的 gem 文件中没有任何旧版本,运行 bundle install 只是为了确定。

'require_tree'。行将从各自的文件夹中获取引导文件,并且我的下拉菜单再次正常工作。

于 2013-10-21T23:31:29.207 回答