Встановлення Bootstrap 3 в Rails App


112

Я намагаюся встановити Bootstrap 3.0 у своєму додатку Rails. Нещодавно я закінчив підручник Майкла Хартла і зараз намагаюся створити власну систему за допомогою цієї нової версії Bootstrap, але у мене є кілька питань, в яких я не впевнений.

Моя система:

  • OS X Mountain Lion на MBP
  • Рейки 4.0
  • Рубін 2.0

Питання у мене:

  1. Який найкращий дорогоцінний камінь використовувати в моєму Gemfile? Я знайшов їх декілька.
  2. Що я імпортую custom.css.scss? Я десь прочитав, що це відрізняється від 2.3.2.
  3. Чи є ще щось, що я повинен зробити, щоб Bootstrap працював, чи інші кроки ідентичні тим, які я дотримувався для Bootstrap 2.3.2?

Редагувати

Ось що спочатку говорить проект bootstrap-rails на GitHub :

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

Тоді воно говорить: робити:

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

Вони роблять одне і те ж, чи ви повинні робити їх обом?

Відповіді:


272

Насправді вам не потрібен дорогоцінний камінь для цього, ось крок до встановлення Bootstrap 3 в RoR

  • Завантажте Bootstrap

  • Копія:

    bootstrap-dist/css/bootstrap.css і bootstrap-dist/css/bootstrap.min.css

    До: vendor/assets/stylesheets

  • Копія:

    bootstrap-dist/js/bootstrap.js і bootstrap-dist/js/bootstrap.min.js

    До: vendor/assets/javascripts

  • Оновлення: app/assets/stylesheets/application.css додавши:

    *= require bootstrap.min
  • Оновлення: app/assets/javascripts/application.js додавши:

    //= require bootstrap.min

За допомогою цього ви можете оновлювати завантажувальну машину в будь-який час, не потрібно чекати, коли дорогоцінний камінь буде оновлений. Також при такому підході трубопровід активів використовуватиме у виробництві мінімізовані версії.


2
Я згоден. Я також виявив, що безпосередньо вставлення файлів стикається з меншими проблемами попереднього збирання активів (наприклад, для натискання на Heroku).
Amy.js

26
Чи є якась перевага в тому, щоб включити мінімізовані файли vendor/assets/{stylesheets|javascripts}? Зірочки повинні мінімізувати файли, що входять до складу app/assets/{stylesheets|javascripts}.
jrhorn424

16
Як включити файли зображень та шрифтів?
wwli

5
@wwli - Дивіться мою відповідь нижче. Це пояснює, як додати гліфікони та шрифти.
rvg

4
чому ви копіюєте і завантажувальний, і bootstrap.min?
ДжонМерліно

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/?

Важливо додати файли до програми / активів , тому в майбутньому ви зможете замінити стилі Bootstrap.

Якщо пізніше ви хочете додати custom.css.scssфайл із власними стилями. У вас буде щось подібне до цього application.css:

 *= require bootstrap                                                            
 *= require custom  

Якщо ви розмістили файли завантажувальної програми у програмі / ресурсах , все працює як очікувалося. Але, якщо ви розмістили їх у постачальниках / активах , файли Bootstrap завантажуються останніми. Подобається це:

<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 не контролює порядок завантаження файлів, а не порядок каталогів у списку шляхів? Порядок шляхів типово контролює завантажену версію файлу, якщо він знайдений у кількох каталогах, включених до списку шляхів. Якщо ні, то як впорядковується порядок заявлених заяв?
Kickingbull

2
Будь ласка, не копіюйте мінімізовані версії, інакше ви отримаєте подвійне включення пізніше (здається, що "Requ_tree." Працює таким чином?). Мені не вдалося відкрити жодні спадні файли після встановленого валяного самоцвіту саме через це подвійне включення.
Курінду Хіме

1
Коментар @Kourindou Hime, схоже, вартий уваги. Я не зміг відкрити спадні меню, поки не видалив .min файли.
Пако Абато

35

Ця відповідь призначена для тих, хто хоче встановити Bootstrap 3 у своєму додатку Rails без використання дорогоцінного каміння. Є два простих способи зробити це, що займає менше 10 хвилин. Виберіть той, який найкраще відповідає вашим потребам. Гліфікони та Javascript працюють, і я перевірив їх із останньою бета-версією Rails 4.1.0.

  1. Використання Bootstrap 3 з Rails 4 - Файли Bootstrap 3 копіюються в каталог постачальників вашої програми.

  2. Додавання Bootstrap з CDN до програми Rails - Файли Bootstrap 3 подаються з CDN Bootstrap .

Число 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 широко використовується в наші дні. Якщо ви користуєтесь цим, тоді вам потрібно змінити 'src: url' на 'src: value-url' в @ font-face змінити. Внизу допису також є зразок проекту, який може допомогти.
rvg

У мене не було кінця проблем із шрифтами - добре працював у розвитку, але не у виробництві. Закінчилося просто розміщенням їх у відкритих / шрифтах
ChrisJ

22

Зараз у Twitter є версія для завантаження sass з готовим дорогоцінним каменем, тому додати її до Rails простіше, ніж будь-коли.

Просто додайте до свого gemfile наступне:

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

bundle install та перезавантажте сервер, щоб зробити доступними файли через конвеєр.

Існує також підтримка компаса та лише sass: https://github.com/twbs/bootstrap-sass


Дякую. Ключовий момент у читанні Github для новачків; "Якщо ви щойно створили новий додаток Rails, він може надіслати файл .css замість цього. Якщо цей файл існує, він буде поданий замість Sass, тому перейменуйте його ..."
Бретт

11

Я використовую https://github.com/yabawock/bootstrap-sass-rails

Що в значній мірі прямо встановлено вперед, швидкі оновлення дорогоцінних каменів та подальші дії та швидкі виправлення, якщо це потрібно.


1
Цей самоцвіт застарілий (як вони самі вказують). Використовуйте офіційний порт SASS замість: github.com/twbs/bootstrap-sass (Також дивіться відповідь: stackoverflow.com/a/20875719/3451975 )
Jeehut

5

gem bootstrap-sass

bootstrap-sass легко потрапляти в Rails за допомогою конвеєра активів.

У свій Gemfile потрібно додати gem bootstrap-sass і переконатися, що дорогоцінний камінь sass-rails присутній - він додається до нових програм 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 .

Але я не знаю, чи працює він в даний час добре з іншими дорогоцінними каменями, як Simple_form, коли ви це робите rails generate simple_form:install --bootstrap, і т.д.


Дякуємо за відповідь. Отже, "gem anjlab" у моєму Gemfile - це все, що я маю робити @ tbraun89?
megashigger

Readme знаходиться на сторінці github. Поточний дорогоцінний камінь є gem "anjlab-bootstrap-rails", "~> 3.0.0.1".
tbraun89

У readme вони роблять це так:gem 'anjlab-bootstrap-rails', '>= 3.0.0.0', :require => 'bootstrap-rails'
tbraun89

Дякую! Я щось додав у запитання. Чи можете ви уточнити частину після "редагування"?
megashigger

Перший завантажує файли безпосередньо з github, тому коли ви робите оновлення пакета, у вас буде найновіша версія, secound завантажує дорогоцінний камінь з рубігем, який на даний момент є версією 3.0.0.1. (2 дні)
tbraun89

0

Насправді у мене було легке вирішення цього питання, в якому я майже чухаю голову, як змусити його працювати. ха-ха!

Ну, спершу я завантажив Bootstrap (компільована версія css та js).

Потім я вставив усі файли css завантажувального файлу до app/assets/stylesheets/.

А потім я вставив усі файли js завантажувального файлу до app/assets/javascripts/.

Я перезавантажив сторінку і wallah! Я щойно додав завантажувальну машину у свій RoR!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.