Rails:找不到'twitter / bootstrap'的文件

时间:2013-04-21 02:15:24

标签: ruby-on-rails ruby twitter-bootstrap assets

我在我的Rails应用程序中使用twitter bootstrap。它在开发模式下运行良好,但不在生产中。这是Gemfile

source 'https://rubygems.org'

ruby '1.9.3'
gem 'rails' 
gem 'jquery-rails'
gem 'haml-rails'
gem 'devise'
gem 'bcrypt-ruby'
gem 'curb'
gem 'nokogiri'
gem 'pg'

group :assets do
  gem 'sass-rails'
  gem 'twitter-bootstrap-rails'
  gem 'uglifier'
end

当我将它作为rails s -e production运行时,它给出了错误

ActionView::Template::Error (couldn't find file 'twitter/bootstrap'
  (in /home/alex/Documents/ruby_projects/p1/app/assets/javascripts/application.js:15)):

的application.js

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

production.rb

config.serve_static_assets = false

# Compress JavaScripts and CSS
config.assets.compress = true

# Don't fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = true

# Generate digests for assets URLs
config.assets.digest = true

有人建议我删除我不能做的gem 'twitter-bootstrap-rails',因为我使用它或者将它移到组资产之外,这对我也没帮助:应用程序很好,除了twitter引导程序文件(js和css) )根本没有加载。

我该如何解决?

更新

如果我使用//= require bootstrap代替//= require twitter/bootstrap,那么即使文件存在,它也会给我cannot load such file -- less (in home/alex/Documents/ruby_projects/pr1/app/assets/stylesheets/bootstrap_and_overr‌​ides.css.less)

如果我重命名css.less to css,那么我会收到下一个错误couldn't find file 'bootstrap_and_overrides' (in /home/alex/Documents/ruby_projects/pr1/app/assets/javascripts/application.js:15)‌​

5 个答案:

答案 0 :(得分:13)

重新启动服务器对我有用。

答案 1 :(得分:11)

我通过以下步骤解决了这个问题:

  1. 从gemfile中的资产外移动 twitter-bootstrap-rails gem
  2. 更新 twitter-bootstrap-rails 宝石版 2.2.6 或 只需在你的gemfile中粘贴下面的行。

    gem'twitter-bootstrap-rails',:git => 'git的://github.com/seyhunak/twitter-bootstrap-rails.git'

  3. <强>(或)

    如果twitter-bootstrap-rails 2.2.6不能正常工作 使用 twitter-bootstrap-rails gem最新版本

答案 2 :(得分:6)

只需使用//= require bootstrap代替//= require twitter/bootstrap

答案 3 :(得分:2)

在application.css中要求Bootstrap LESS(bootstrap_and_overrides.css.less)在这里没有意义,因为管道已经带有“require_tree”。它会自动包含资产管道文件夹中的所有内容。

所以,我建议你在你的Gemfile中做一些改变。

从Gemfile中的资产外移动以下宝石。

这样做

gem "therubyracer"
gem "less-rails"
gem "twitter-bootstrap-rails"

而不是

group :assets do
  gem "therubyracer"
  gem "less-rails"
  gem "twitter-bootstrap-rails"
end

答案 4 :(得分:0)

下面的步骤对我有用:

  1. 从:assets外部的gemfile中移动twitter-bootstrap-rails gem
  2. 在gemfile中用这个(gem“ twitter-bootstrap-rails”,'〜> 2.2.6“)替换twitter bootstrap gem
  3. 捆绑更新
  4. 重新启动服务器并测试