1

我从Bootstrap 2.3.2升级到3,现在我的下拉菜单不再工作。我试着重新编译Heroku的资源,并在过去的几天花了我的编码时间,把我的头撞到了墙上。一切都在发展,但不是生产。以下是相关文件:如何让Twitter Bootstrap 3与Rails 4和Heroku一起工作

的Gemfile:

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 

的application.js:

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

如果我把// =需要引导下的jQuery或jquery_ujs要求,那么JS的发展突破。

production.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 

我缺少什么?

回答

1

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

twitter bootstrap drop down suddenly not working

Javascript features work on localhost but not when deployed to Heroku

rails precompile Why javascript does not work locally but at heroku it works

Rails custom.css not working when deployed to Heroku

0

我还是on Rails的3,但是我的下拉菜单在更新到Bootstrap 3后却出现了相同的问题,而且它们也似乎取决于我放置的顺序// =需要以m为单位的引导程序y application.js文件。

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

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

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

1

看起来好像有些事情在我的头文件中搞砸了,我的资产被调用了两次。

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

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

相关问题