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個晚上的編碼時間與它搏鬥,看着我能找到的每個源代碼告訴我應該工作的代碼,但它仍然無法工作!

相關問題