Bootstrap 3 + Rails 4 - Некоторые глификоны не работают

Я пытаюсь использовать bootstrap 3 в своем приложении 4 rails. Следующее это учебное пособие по настройке bootstrap 3 с помощью bootstrap saas с этой страницы github.

Bootstrap работает нормально, но глификоны работают не так, как ожидалось.

Некоторые глификоны вообще не отображаются. Напр. Я устал отображать некоторые из них для тестирования в своем приложении application.html.erb:

glyphicon glyphicon-floppy-disk -> <span class="glyphicon glyphicon-floppy-disk"></span>
</br>
glyphicon glyphicon-plus -> <span class="glyphicon glyphicon-plus"></span>
</br>
glyphicon glyphicon-minus -> <span class="glyphicon glyphicon-minus"></span> 

Значки отображаются как this

Значок флоппи-диска вообще не отображается (отображается недопустимый charecter) Плюсы и минусы не являются жирным шрифтом и намного меньше, чем показанные на веб-сайте bootstap.

Я также вижу следующие сообщения на консоли rails.

Started GET "/fonts/glyphicons-halflings-regular.woff" for 127.0.0.1 at 2014-02-22 16:29:54 -0800
ActionController::RoutingError (No route matches [GET] "/fonts/glyphicons-halflings-regular.woff"):

Started GET "/fonts/glyphicons-halflings-regular.ttf" for 127.0.0.1 at 2014-02-22 16:29:54 -0800
ActionController::RoutingError (No route matches [GET] "/fonts/glyphicons-halflings-regular.ttf"):

Started GET "/fonts/glyphicons-halflings-regular.svg" for 127.0.0.1 at 2014-02-22 16:29:54 -0800
ActionController::RoutingError (No route matches [GET] "/fonts/glyphicons-halflings-regular.svg"):

Я бы очень признателен за ваши материалы по этой проблеме.

Спасибо!

Ответ 1

У меня была та же проблема и я нашел решение. Полный кредит идет на Эрик Минкель, который написал подробное сообщение в блоге по этой теме. Я бы настоятельно предложил прочитать его для дальнейших рассуждений.

  • Измените app/assets/stylesheets/application.css, добавив:

    *= require bootstrap
    
  • Измените app/assets/javascripts/application.js, добавив:

    //= require bootstrap
    
  • В config/application.rb добавьте следующее после class Application < Rails::Application. Он должен выглядеть следующим образом:

    class Application < Rails::Application
        config.assets.paths << "#{Rails}/vendor/assets/fonts"
    
  • В терминале скомпилируйте свои активы, выполнив:

    rake assets:precompile RAILS_ENV=development
    
  • Отредактируйте файл bootstrap.css, изменив расположение ресурсов @font-face с ../fonts/ на /assets/. Он должен выглядеть следующим образом:

    @font-face {
        font-family: 'Glyphicons Halflings';
        src: url('/assets/glyphicons-halflings-regular.eot');
        src: url('/assets/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('/assets/glyphicons-halflings-regular.woff') format('woff'), url('/assets/glyphicons-halflings-regular.ttf') format('truetype'), url('/assets/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg');
    }
    

Вы закончили. Просто перезапустите с помощью rails s и появятся глификоны.

Ответ 2

Использование Jus:

@import "bootstrap-sprockets"
@import "bootstrap"

В вашем файле scss или sass. "bootstrap-sprockets" требуется для исправления изображения и шрифта.

Ответ 3

У меня была такая же проблема. Решено путем добавления:

@import "bootstrap-sprockets";

над существующей строкой:

@import 'bootstrap';

в файле/app/stylesheets/bootstrap_and_customisation.css.scss

Ответ 4

У меня была та же проблема. Что-то не так с курсором в бутстрапе. К счастью, это довольно простое решение:

$icon-font-path: 'bootstrap/';

Это исправило это для меня. Должен идти перед импортом bootstrap-sass. Вам может потребоваться изменить значение здесь.

Ответ 5

Обновить. У меня была такая же проблема, и я прошел через шаги, предоставленные ответом №1 от Oddurs. Почему-то это не сработало для меня. И затем я понял, что это связано с файловой структурой в моей общей папке (не знаю, почему моя была другой).

В основном я получил его для работы, добавив "/bootstrap" после "/assets", так как все мои глификоны находились в папке "/bootstrap", по-моему, по умолчанию

Итак, вместо этого:

@font-face {
 font-family: 'Glyphicons Halflings';
 src: url('/assets/glyphicons-halflings-regular.eot');
 src: url('/assets/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('/assets/glyphicons-halflings-regular.woff') format('woff'), url('/assets/glyphicons-halflings-regular.ttf') format('truetype'), url('/assets/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg');
}

Я сделал это:

@font-face {
  font-family: 'Glyphicons Halflings';
  src: url('/assets/bootstrap/glyphicons-halflings-regular.eot');
  src: url('/assets/bootstrap/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('/assets/bootstrap/glyphicons-halflings-regular.woff') format('woff'), url('/assets/bootstrap/glyphicons-halflings-regular.ttf') format('truetype'), url('/assets/bootstrap/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg');
}

в application.css. Надеюсь, что кто-то поможет

Ответ 6

Другим решением будет копирование папки шрифтов в общедоступную папку, поэтому у вас есть

public/fonts/glylpicons-.....

Те же самые решения будут работать для шрифтов - удивительный и т.д. Единственным недостатком этого является частое изменение файлов шрифтов: o)

Ответ 7

Если вы используете bootstrap-sass-official, добавьте это, прежде чем импортировать bootstrap:

$icon-font-path: 'bootstrap-sass-official/assets/fonts/bootstrap/';

Ответ 8

Для меня это была проблема с несовместимость версий между bootstrap-sass и sass.

Если вы проверите свой сгенерированный файл application.css, вы увидите, что @font-face обернут внутри @at-root, что является новым объявлением sass, которое не поддерживается версией sass, которую я использовал.

Я обновил sass-rails до 5.0.3 и sass до 3.4.16, и он работал (sass должно быть не менее 3.3).

Ответ 10

Я использую twitter-bootstrap-rails, а сообщение об ошибке -/assets/twitter/fonts/...

Причиной является то, что в gitter-twitter-bootstrap-rails не включены ресурсы Glyphicons в каталоге поставщика. Я пробовал все решения выше, но никто из них не работал.

Окончательное решение для меня - загрузить zip файл с официального сайта начальной загрузки, разархивировать его, переместить недостающие файлы в каталог public/assets/twitter/fonts. Он работает для моей среды разработки.

Ответ 11

Убедитесь, что ваш gemfile обновлен и что vendor/cache понятен.

Моя проблема вызвана нечетными версиями драгоценных камней, поэтому я запустил bundle update, обновив cache.

Updating files in vendor/cache
Removing outdated .gem files from vendor/cache
  * bullet-4.14.9.gem
  * bootstrap-sass-3.3.5.gem
  * pry-0.10.2.gem
  * webmock-1.21.0.gem
  * sprockets-2.12.4.gem
  * minitest-reporters-1.1.3.gem
  * sass-3.2.19.gem
  * coffee-rails-4.0.1.gem
  * hashie-3.4.2.gem
  * newrelic_rpm-3.13.2.302.gem
  * nprogress-rails-0.1.6.7.gem
  * schema_plus_pg_indexes-0.1.7.gem
  * hike-1.2.3.gem
  * minitest-5.8.1.gem
  * tilt-1.4.1.gem
  * sass-rails-4.0.5.gem
Bundle updated!

Как только я это сделал, для хорошей меры я делаю для других кэшей также очищенными rake assets:clobber и повторно скомпилировал активы RAILS_ENV=production rake assets:precompile.

Затем я перезапустил nginx ../bin/restart и magic.... глификоны появились вместо нечетной квадратной вещи в Firefox на рабочем столе и на iPad. Все вместо человека глификон.

Ответ 12

В то же время возникают проблемы при обновлении до Rails 4.1.4, bootstrap-sass 3.2.0.

Хорошие намеки выше, но никто не помогло.

Эти шаги работали:

  • Скопируйте файлы шрифтов в RAILS_ROOT/vendor/assets/fonts/bootstrap/(вам, вероятно, нужно создать каталог)

  • Добавьте это в config/application.rb

    config.assets.paths += %W("#{Rails.root}/vendor/assets/fonts")

Не требуется никаких специальных директив или переопределений переменных sass.

Ответ 13

У меня возникли проблемы с просмотром:

<span class="glyphicon glyphicon-edit"></span>

в моей среде разработки. Работала следующая настройка.

В файле css.scss добавьте:

@import "bootstrap-sprockets";
@import 'bootstrap';

Ответ 14

Если вы устали от магии bootstrap-sass или twitter-bootstrap-rails или хотите остаться с определенной версией бутстрапа, вот что вы можете сделать вручную:

  • Загрузите bootstrap из http://getbootstrap.com/, поместите файлы в свой #{Rails.root}/vendor/assets/javascripts

  • В файле app/assets/javascripts/application.js напишите //= require 'bootstrap-3.3.6-dist/js/bootstrap.min'

  • В файле app/assets/stylesheets/application.css напишите *= require 'bootstrap-3.3.6-dist/css/bootstrap.min'

  • Поместите script как это в свой {Rails.root}/bin и настройте его для запуска capistrano при развертывании на производство:

#!/usr/bin/env ruby     

rails_path = File.expand_path('../../', __FILE__)
puts rails_path

`mkdir public/images`

Dir.glob("#{rails_path}/vendor/assets/**/images").each do |directory|
  `cp #{directory}/* #{rails_path}/public/images/`
end

`mkdir public/fonts`

Dir.glob("#{rails_path}/vendor/assets/**/fonts").each do |directory|
  `cp #{directory}/* #{rails_path}/public/fonts/`
end
  • Настройте nginx на своих производственных станциях для обслуживания общедоступных/изображений и общедоступных/шрифтов.
        location ~ ^/(assets|images|fonts)/(.*)$ {
            alias /var/www/my_app/current/public/$1/$2;
            gzip on;
            expires max;
            add_header Cache-Control public;
        }

С этого момента каждый раз, когда вы говорите cap production deploy, все ручные вещи будут позабочены.

Ответ 15

Вы можете скопировать все файлы шрифтов bootstrap в общедоступные/шрифты, и он будет работать

Ответ 16

Использование рельсов 4.2.6

Мне пришлось отредактировать config/application.rb

Я добавил эту строку

.
.
.
class Application < Rails::Application
   config.action_controller.relative_url_root = '/myapp'

Теперь шрифты ссылаются относительно значения relative_url_root.

Ответ 17

Добавление следующего в application.scss работало для меня на Rails 5 (после раскомментации @import "bootstrap/glyphicons"; из того же файла [с помощью orats gem])

@font-face {
    font-family: 'Glyphicons Halflings';
    src: url('/assets/bootstrap/glyphicons-halflings-regular.eot');
    src: url('/assets/bootstrap/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('/assets/bootstrap/glyphicons-halflings-regular.woff') format('woff'), url('/assets/bootstrap/glyphicons-halflings-regular.ttf') format('truetype'), url('/assets/bootstrap/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg');
}

Ответ 18

Я использую angular -ui-bootstrap-rails gem

gem 'angular -ui-bootstrap-rails'

Я загрузил bootstrap и вставил папку шрифтов в папку app/assets

Затем перезапустите сервер rails.