在Rails App上安装Bootstrap 3


112

我正在尝试在我的Rails应用程序上安装Bootstrap 3.0。我最近完成了Michael Hartl的教程,现在正在尝试使用此新版本的Bootstrap构建我自己的系统,但是我有一些不确定的问题。

我的系统规格:

  • MBP上的OS X Mountain Lion
  • Rails 4.0
  • Ruby 2.0

我有问题:

  1. 我的Gemfile中使用的最好的宝石是什么?我发现了其中一些。
  2. 我要导入什么custom.css.scss?我在某处读到它不同于2.3.2。
  3. 要使Bootstrap正常工作,我还有其他事情要做吗,或者其余步骤是否与我对Bootstrap 2.3.2遵循的步骤相同?

编辑

这是GitHub上bootstrap-rails项目首先要说的

gem 'anjlab-bootstrap-rails', :require => 'bootstrap-rails',
                              :github => 'anjlab/bootstrap-rails'

然后说要做:

gem 'anjlab-bootstrap-rails', '>= 3.0.0.0', :require => 'bootstrap-rails'

他们做同样的事情,还是必须同时做它们?

Answers:


272

实际上,您不需要gem,这是在RoR中安装Bootstrap 3的步骤

  • 下载 Bootstrap

  • 复制:

    bootstrap-dist/css/bootstrap.cssbootstrap-dist/css/bootstrap.min.css

    至: vendor/assets/stylesheets

  • 复制:

    bootstrap-dist/js/bootstrap.jsbootstrap-dist/js/bootstrap.min.js

    至: vendor/assets/javascripts

  • 更新: app/assets/stylesheets/application.css通过添加:

    *= require bootstrap.min
  • 更新: app/assets/javascripts/application.js通过添加:

    //= require bootstrap.min

有了它,您可以随时更新引导程序,而无需等待gem进行更新。同样,通过这种方法,资产管道将在生产中使用缩小版本。


2
我同意。我还发现,直接插入文件会减少预编译资产中的问题(例如,推送到Heroku)。
Amy.js 2013年

26
将缩小的文件包含在其中有什么好处vendor/assets/{stylesheets|javascripts}?链轮应该缩小包含的文件app/assets/{stylesheets|javascripts}
jrhorn424 2013年

16
如何包含图像和字体文件?
wwli

5
@wwli-请在下面查看我的答案。它说明了如何添加Glyphicons和字体。
rvg

4
为什么要同时复制bootstrap和bootstrap.min?
JohnMerlino 2014年

62

众所周知,不需要宝石。

采取的步骤:

  1. 下载Bootstrap
  2. 复制

    bootstrap/dist/css/bootstrap.css
    bootstrap/dist/css/bootstrap.min.css 

    至: app/assets/stylesheets

  3. 复制

    bootstrap/dist/js/bootstrap.js
    bootstrap/dist/js/bootstrap.min.js 

    至: app/assets/javascripts

  4. 附加到: app/assets/stylesheets/application.css

    * =需要引导

  5. 附加到: app/assets/javascripts/application.js

    // =需要引导

就这些。您已经准备好添加新的超酷Bootstrap模板。


为什么要app/代替vendor/

将文件添加到app / assets很重要,因此将来您将能够覆盖Bootstrap样式。

如果以后要添加custom.css.scss具有自定义样式的文件。您将在中拥有与此类似的内容application.css

 *= require bootstrap                                                            
 *= require custom  

如果您将引导文件放置在app / assets中,那么一切都会按预期进行。但是,如果将它们放在供应商/资产中,则引导文件将最后加载。像这样:

<link href="/assets/custom.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/bootstrap.css?body=1" media="screen" rel="stylesheet">

因此,您的某些自定义设置将不会被使用,因为Bootstrap样式将覆盖它们。

背后的原因

Rails将在许多位置搜索资产;要获取此位置的列表,可以执行以下操作:

$ rails console
> Rails.application.config.assets.paths

在输出中,您将看到应用程序/资产优先,因此首先加载它。


4
application.css文件中require语句的顺序不是控制文件的加载顺序,而不是路径列表中目录的顺序吗?如果在路径列表中包含的多个目录中找到文件gest的版本,路径的顺序通常控制着该文件的哪个版本。如果不是,那么require语句的顺序如何发挥作用?
Kickingbull 2014年

2
请不要复制缩小的版本,否则以后您将获得双重包含(好像'require_tree。'这样工作吗?)。由于这个双重包含,我无法在安装靴子 gem 之后打开任何下拉列表。
Kourindou Hime 2014年

1
@Kourindou Hime的评论似乎值得关注。在删除.min文件之前,我无法打开下拉菜单。
Paco Abato '16

35

对于那些希望在不使用gem的情况下在Rails应用程序中安装Bootstrap 3的用户,此答案是适用的。有两种简单的方法可以完成此操作,而只需不到10分钟的时间。选择最适合您需求的产品。Glyphicons和Javascript可以正常工作,我也已经在最新的Rails 4.1.0 Beta中对其进行了测试。

  1. 将Bootstrap 3与Rails 4一起使用-Bootstrap 3文件被复制到应用程序的供应商目录中。

  2. 从CDN将Bootstrap添加到Rails应用程序 -Bootstrap 3文件从Bootstrap CDN提供

上面的2号是最灵活的。您需要做的就是更改存储在布局助手中的版本号。因此,您可以运行自己选择的Bootstrap版本,无论是3.0.0、3.0.3还是更低版本的Bootstrap 2。


似乎无法使它正常工作。它一直localhost:3000/fonts/glyphicons-halflings-regular.svg以Chrome控制台为例进行搜索,而字形图标并没有出现(例如404)。
史蒂夫

1
@Steve-我假设您在开发中遇到问题,因此选择了上面的#1。如果那是正确的,那么我会仔细检查您是否已将Bootstrap字体目录及其所有内容复制到/vendor/assets/了项目中。您还应该检查application.css以确保您需要bootstrap.min并具有@ font-face覆盖。如今,SCSS被广泛使用。如果使用的是,则需要在@ font-face替代中将“ src:url”更改为“ src:asset-url”。文章底部还有一个示例项目可能会有所帮助。
rvg 2014年

我对字体没有任何麻烦-在开发中效果不错,但在生产中效果不佳。最终只是将它们设置为公共/字体
ChrisJ

22

Twitter现在有一个包含了gem 的好用的Bootstrap版本,因此比以往任何时候都更容易将其添加到Rails中。

只需将以下内容添加到您的gemfile中:

gem 'sass-rails', '>= 3.2' # sass-rails needs to be higher than 3.2
gem 'bootstrap-sass', '~> 3.1.1'

bundle install 并重新启动服务器,以使文件可通过管道使用。

还支持罗盘和仅适用于ass的应用程序:https : //github.com/twbs/bootstrap-sass


谢谢。github自述文件中针对新手的关键点;“如果您刚刚生成了一个新的Rails应用程序,它可能会附带一个.css文件。如果该文件存在,它将代替Sass服务,因此请重命名...”
Brett


5

gem bootstrap-sass

bootstrap-sass很容易通过资产管道落入Rails。

在您的Gemfile中,您需要添加bootstrap-sass gem,并确保存在sass-rails gem-默认情况下将其添加到新的Rails应用程序中。

gem 'sass-rails', '>= 3.2' # sass-rails needs to be higher than 3.2 gem 'bootstrap-sass', '~> 3.0.3.0'

bundle install 并重新启动服务器,以使文件可通过管道使用。

资料来源:http : //rubydoc.info/gems/bootstrap-sass/3.0.3.0/frames


3

对我来说,最简单的方法是

1)下载引导程序并将其解压缩到 vendor

2)将引导路径添加到您的配置中

config.assets.paths << Rails.root.join("vendor/bootstrap-3.3.6-dist")

3)要求他们

在CSS *= require css/bootstrap

在js中 //= require js/bootstrap

做完了!

此方法使字体加载时无需任何其他特殊配置,并且不需要将引导文件移出其独立目录。


3

使用此分支有望解决问题:

gem 'twitter-bootstrap-rails',
  git: 'git://github.com/seyhunak/twitter-bootstrap-rails.git',
  branch: 'bootstrap3'

1

我认为新引导程序版本的最新宝石是anjlab表格。

但是我不知道当您这样做时rails generate simple_form:install --bootstrap,它当前是否可以与诸如simple_form之类的其他gem一起使用,等等。您可能必须编辑一些初始化程序或配置以适应新的引导程序版本。


感谢您的回复。所以我在Gemfile中的'gem anjlab'是我要做的全部@ tbraun89吗?
巨轮

自述文件位于github页面上。当前的宝石是gem "anjlab-bootstrap-rails", "~> 3.0.0.1"
tbraun89

在自述文件中,他们这样做: gem 'anjlab-bootstrap-rails', '>= 3.0.0.0', :require => 'bootstrap-rails'
tbraun89

谢谢!我在问题中添加了一些内容。您能否在“编辑”之后澄清部分?
megashigger 2013年

首先是直接从github加载文件,所以当您进行捆绑更新时,您将拥有最新版本,secound会从rubygems加载当前3.0.0.1版的gem。(2天大)
tbraun89

0

实际上,我对此有一个简单的解决方法,其中我几乎全神贯注于如何使其工作。哈哈哈!

好吧,首先我下载了​​Bootstrap(已编译的css和js版本)。

然后,我将所有引导css文件粘贴到app/assets/stylesheets/

然后将所有bootstrap js文件粘贴到app/assets/javascripts/

我重新加载了页面和wallah!我刚刚在RoR中添加了引导程序!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.