使用Rails 4的Bootstrap Integration gem

时间:2013-08-15 14:52:42

标签: ruby-on-rails gem twitter-bootstrap-rails hardcoded

我最近参加了一个黑客马拉松,我们在rails中创建了一个Web应用程序。我们都是rails的新手并且不知道bootstrap gem,因此我们在assets文件夹中硬编码了bootstrap样式表。

为了学习Rails,我还在继续使用该应用程序。我删除了.css文件,并将gem添加到我的Gemfile中。我已经运行了bundle install并使用另一个CSS文件中的'@import'命令导入了文件。

当我运行rails服务器并导航到我的主页时,出现错误:

    Sass::SyntaxError in Pages#rootpage

Showing C:/Users/User/Documents/SoapBox/app/views/layouts/application.html.erb where line #6 raised:

File to import not found or unreadable: bootstrap.

Load paths:
  C:/Users/Soham/Documents/SoapBox/app/assets/images
  C:/Users/Soham/Documents/SoapBox/app/assets/javascripts
  C:/Users/Soham/Documents/SoapBox/app/assets/stylesheets
  C:/Users/Soham/Documents/SoapBox/vendor/assets/javascripts
  C:/Users/Soham/Documents/SoapBox/vendor/assets/stylesheets
  C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/turbolinks-1.3.0/lib/assets/javascripts
  C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/jquery-rails-3.0.4/vendor/assets/javascripts
  (in C:/Users/Soham/Documents/SoapBox/app/assets/stylesheets/styles.css.scss:2)
`File to import not found or unreadable: bootstrap`.

 <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href='http://fonts.googleapis.com/css?family=Oswald:700,300' rel='stylesheet' type='text/css'>
<%= favicon_link_tag "favicon.png", :type => "image/png", :rel => "icon" %>
<%= stylesheet_link_tag    "application", media: "all", "data-turbolinks-track" => true %>
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
<%= csrf_meta_tags %>

我不明白为什么会发生错误。

非常感谢任何帮助!

谢谢!

SohamK

4 个答案:

答案 0 :(得分:1)

我建议观看此内容:RailsCast

它提到安装这样的引导程序:

#commandline
rails g bootstrap:install

如果之后不起作用,请尝试将其添加到较少的文件中。

#css NOT scss   
@import "twitter/bootstrap/bootstrap";

请记住,宝石更少。将较少的文件导入scss文件将会中断。

答案 1 :(得分:0)

更新: 由于您已经在使用bootstrap-sass,因此它应该没有任何问题。你可以粘贴styles.css.scss

的内容吗?

原件: 如果你想将它导入自定义样式表,你可能需要bootstrap-sass而不是bootstrap-rails gem。

#Gemfile
group :assets do
  gem 'bootstrap-sass'
end

# app/assets/stylesheets/styles.css.scss
@import 'bootstrap';
@import 'bootstrap/responsive';

如果你想使用bootstrap-rails gem,你需要在application.css中导入sprocket里面

# Gemfile
group :assets do
  gem 'bootstrap-rails'
end

# app/assets/stylesheets/application.css

/*
*= require bootstrap
*= require bootstrap/responsive
*/

答案 2 :(得分:0)

虽然这不会回答你关于你的错误的问题,但我更喜欢简单地在你的'Vendor'资产文件夹中包含Bootstrap文件(通常的做法是把你没有编码的任何东西放在那里像JQuery一样)。

我更喜欢这个,因为当Twitter-Bootstrap有更新时,删除文件要简单得多。此外,在您使用的任何编辑器中查看CSS文件要好得多。

答案 3 :(得分:0)

将扩展程序.scss添加到application.css。如果您删除了它,请再次添加。

它应该是这样的:

#application.css.scss
/*
 *
 *= require_self
 *= require_tree .
*/

@import "bootstrap";

...

.scss文件中使用该导入非常重要。否则它将无法工作。

有意义吗?