Rails: использование Font Awesome

Мой веб-дизайнер предоставил мне обновленные шрифты / значки, которые были добавлены в font awesome - он поместил их в локальную папку шрифтов. Мне также дали файл font-awesome.css.

Я скопировал папку шрифтов напрямую в свои активы и поместил font-awesome.css в активы / таблицы стилей.

В моем коде ссылка на css указана правильно, но ни один из значков из папки шрифтов не загружается.

Есть ли что-то, что мне нужно сделать, чтобы убедиться, что все загружается правильно и / или есть ссылка на папку шрифтов?


person user464180    schedule 15.06.2012    source источник
comment
Можете ли вы опубликовать код и / или ссылку на место, где существует проблема?   -  person djangodude    schedule 15.06.2012


Ответы (10)


сначала: добавьте app / assets / fonts в путь к ресурсу (config / application.rb)

config.assets.paths << Rails.root.join("app", "assets", "fonts")

затем переместите файлы шрифтов в / assets / fonts (сначала создайте папку)

Теперь переименуйте font-awesome.css в font-awesome.css.scss.erb и отредактируйте его следующим образом: change:

@font-face {
  font-family: "FontAwesome";
  src: url('../font/fontawesome-webfont.eot');
  src: url('../font/fontawesome-webfont.eot?#iefix') format('eot'), url('../font/fontawesome-webfont.woff') format('woff'), url('../font/fontawesome-webfont.ttf') format('truetype'), url('../font/fontawesome-webfont.svg#FontAwesome')    format('svg');
  font-weight: normal;
  font-style: normal;
}

к этому:

@font-face {
  font-family: "FontAwesome";
  src: url('<%= asset_path("fontawesome-webfont.eot") %>');
  src: url('<%= asset_path("fontawesome-webfont.eot") + "?#iefix" %>') format('eot'), url('<%= asset_path("fontawesome-webfont.woff") %>') format('woff'), url('<%= asset_path("fontawesome-webfont.ttf") %>') format('truetype'), url('<%= asset_path("fontawesome-webfont.svg") + "#FontAwesome" %>') format('svg');
  font-weight: normal;
  font-style: normal;
}

Наконец: проверьте, что все ресурсы загружены правильно (с помощью Firebug или Chrome Inspector)

person VMOrtega    schedule 15.06.2012
comment
сработало и для меня с одним предостережением: мне НЕ пришлось использовать SASS и ERB в одном файле. Я не уверен, что Rails может выполнять двойную предварительную обработку файла, подобного этому. Но в любом случае его не нужно запускать через SASS, поэтому просто выполнение font-awesome.css.erb сработало для меня. Спасибо! - person ipd; 20.12.2012
comment
При использовании Rails 3.2.11 это нормально работает. Отличный ответ! - person sergserg; 23.01.2013
comment
Не забываем перезапустить сервер (: - person Preethi Kumar; 01.10.2017
comment
Обратите внимание, что вторая строка src на самом деле очень длинная. Вам нужно изменить каждую из них и не разбивать их на несколько src строк. На самом деле другой ответ с использованием font_url с scss также работает и является более кратким. - person lnyng; 02.10.2017

Теперь есть более простой способ: просто добавьте gem "font-awesome-rails" в свой Gemfile и запустите bundle install.

Затем в свой application.css включите файл css:

/*
 *= require font-awesome
 */

Он автоматически включает font-awesome в ваш конвейер ресурсов. Выполнено. Начни пользоваться :)

Дополнительную информацию см. В документации font-awesome-rails.

person nathanvda    schedule 23.07.2013
comment
как насчет font-awesome-sass fortawesome.github.io/Font-Awesome/get- началось - person msanjay; 12.05.2014
comment
Я пытаюсь сделать это таким образом, но не генерирую файлы под своими активами таблицы стилей. - person Suraj; 18.06.2015
comment
Нет, файлы ресурсов находятся внутри гема. - person nathanvda; 18.06.2015
comment
но значки не загружаются после выполнения того, что было предложено выше, и когда я пытаюсь использовать CDN для font-awesome, при отправке кода в heroku я получаю другую удаленную ошибку: Sass :: SyntaxError: Undefined variable: $ fa -css-префикс. - person Suraj; 18.06.2015
comment
Вы должны задать этот вопрос в другом вопросе. Это слишком конкретная информация и слишком мало информации, чтобы помочь. - person nathanvda; 18.06.2015
comment
Я использую Rails 4 и получаю сообщение об ошибке couldn't find file 'font-awesome'. - person chipit24; 05.09.2015
comment
Вы запускали bundle install? - person nathanvda; 05.09.2015
comment
Возможно, вам придется использовать синтаксис import @ с этим драгоценным камнем и sass, а не синтаксис require. Но в любом случае шрифты могут отображаться как пустые квадраты в производственной среде, даже если шрифты загружены для каждого инспектора страниц. - person JosephK; 09.09.2017
comment
это работает хорошо, но только для бесплатных иконок, если у вас есть профессиональная лицензия, вы не можете использовать профессиональные иконки с этим драгоценным камнем - person damoiser; 23.11.2020

Я предлагаю другой ответ, в этом вам не придется беспокоиться о драгоценных камнях, путях или любых из этих избыточных решений. Просто вставьте эту строку в свой application.html.erb (или любой другой файл с вашим макетом)

<head>
...
<link href="//stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
</head>  
person Guillermo Siliceo Trueba    schedule 23.03.2014
comment
Спасибо!! ЭТО сработало, после нескольких часов борьбы с гемом font-awesome-sass, но безрезультатно. Кстати, я оставил драгоценный камень установленным, и никаких побочных эффектов я не заметил; не уверен, что драгоценный камень что-то делает, но достаточно времени потрачено на то, что должно работать. - person JosephK; 09.09.2017
comment
Вероятно, он ничего не делает, вы хотите его очистить, меньше драгоценных камней всегда хорошо для любого проекта рельсов. - person Guillermo Siliceo Trueba; 14.09.2017

В дополнение к ответу Викоара

Для Rails 4 вам нужно немного изменить CSS. Обратите внимание на использование font_url:

@font-face {
  font-family: "FontAwesome";
  src: font_url('fontawesome-webfont.eot');
  src: font_url('fontawesome-webfont.eot?#iefix') format('eot'), font_url('fontawesome-webfont.woff') format('woff'), font_url('fontawesome-webfont.ttf') format('truetype'), font_url('fontawesome-webfont.svg') format('svg');
  font-weight: normal;
  font-style: normal;
}
person EdC    schedule 10.03.2015
comment
только что понял, почему потрясающий гем шрифта не работает, я удалил ссылку на applications.css со страницы своего приложения. Теперь, когда я его снова подключил, он начал работать. так что пойдем с этим решением, так как оно кажется более чистым - person killerbarney; 08.01.2016
comment
Наконец-то. На этот раз у меня ушло всего час. Было бы здорово, если бы я мог установить font-awesome-rails и все готово. Неа. - person Damien Roche; 18.01.2019

Теперь самый простой способ интегрировать Font Awesome с Rails - это следующий способ:

SASS Ruby Gem

Используйте официальный Font Awesome SASS Ruby Gem, чтобы легко добавить Font Awesome SASS в проект Rails.

Добавьте эту строку в Gemfile вашего приложения:

gem 'font-awesome-sass'

А затем выполните:

$ bundle

Добавьте это в свой Application.scss:

@import "font-awesome-sprockets";
@import "font-awesome";
person AR Rose    schedule 10.12.2016

Пройдя через это с Rails 5.2, я хотел бы поделиться, как это работает, если вы не хотите использовать гем font-awesome-rails:

  1. Поместите файлы шрифтов FontAwesome (EOT, WOFF и т. Д.) В подпапку с подходящим названием / app / assets, / vendor / assets или / lib / assets. , например: / app / assets / fonts.
  2. Добавьте эту строку в config / initializers / assets.rb:

    Rails.application.config.assets.paths ‹< Rails.root.join («приложение», «активы», «шрифты»)

  3. Переименуйте файл all.css в FontAwesome в all.scss. Если вы этого не сделаете, Rails не будет предварительно обрабатывать ссылки на пути на следующем шаге.

  4. Замените все пути к файлам шрифтов ссылками на конвейер Rails (т. Е. font-url или актив -url):

    например. раньше

    @ font-face {font-family: 'Font Awesome 5 Free'; стиль шрифта: нормальный; font-weight: 900; src: url ("../ webfonts / fa-solid-900.eot"); src: url ("../ webfonts / fa-solid-900.eot? #iefix") формат ("embedded-opentype"), url ("../ webfonts / fa-solid-900.woff2") формат ( "woff2"), формат URL ("../ webfonts / fa-solid-900.woff") ("woff"), формат URL ("../ webfonts / fa-solid-900.ttf") ("truetype "), URL (" ../ webfonts / fa-solid-900.svg # fontawesome ") формат (" svg "); }

    например. после

    @ font-face {font-family: 'Font Awesome 5 Free'; стиль шрифта: нормальный; font-weight: 900; SRC: URL-адрес ресурса ("fa-solid-900.eot"); src: asset-url ("fa-solid-900.eot? #iefix") формат ("embedded-opentype"), asset-url ("fa-solid-900.woff2") формат ("woff2"), asset -url ("fa-solid-900.woff") формат ("woff"), формат URL-адреса ресурса ("fa-solid-900.ttf") формат ("truetype"), URL-адрес ресурса ("fa-solid- 900.svg # fontawesome ") format (" svg "); }

  5. Перезагрузите сервер.

person MSC    schedule 24.09.2018

Как использовать font-awesome 4 с barebones Rails 6 и Webpacker без каких-либо дополнительных гемов, копировать шрифт или файлы css в ваше приложение и делать другие странные вещи:

Добавьте пакет font-awesome npm - package.json:

{
  "dependencies": {
    "font-awesome": "4.7.0"
  }
}

Включите файл css с потрясающим шрифтом в манифест css - app / stylesheets / application.css:

/*
 *= require font-awesome/css/font-awesome.min
 *= require_tree .
 *= require_self
 */

Переопределите определение шрифта в нашем пользовательском файле css - app / stylesheets / font-awesome.css.erb:

@font-face {
  font-family: 'FontAwesome';
  src: url('<%= font_path('fontawesome-webfont.eot') %>');
  src: url('<%= font_path('fontawesome-webfont.eot') %>?#iefix') format('embedded-opentype'), url('<%= font_path('fontawesome-webfont.woff2') %>') format('woff2'), url('<%= font_path('fontawesome-webfont.woff') %>') format('woff'), url('<%= font_path('fontawesome-webfont.ttf') %>') format('truetype'), url('<%= font_path('fontawesome-webfont.svg') %>#fontawesomeregular') format('svg');
  font-weight: normal;
  font-style: normal;
}

Включите типы файлов node_modules font-awesome dir + font в конвейер ресурсов - config / initializers / assets.rb

Rails.application.config.assets.paths << Rails.root.join('node_modules/font-awesome/fonts')
Rails.application.config.assets.precompile << /\.(?:svg|eot|woff|ttf)\z/

Вы получите шрифты, включенные и скомпилированные в каталог public / fonts, и вы получите один файл css со всем содержимым (вашим приложением и font-awesome), скомпилированным в него.

Дело в том, что font-awesome minified css содержит жестко запрограммированные пути к шрифтам, и чтобы переопределить это, мы просто добавляем директиву font-face с сгенерированными путями шрифтов. По этой причине в файл манифеста следует сначала добавить font-awesome.min.css.

Однако, хотя все будет работать нормально, в консоли вы получите ошибку 404. Мне не удалось это исправить, и в конце концов я сдался и переключился на font-awesome-sass gem.

person Vladimir Rozhkov    schedule 09.07.2019

Для Rails 6 + Webpacker.

Вы можете установить с помощью Yarn: yarn add @fortawesome/fontawesome-free

А затем в app/javascript/packs/application.js вам нужно будет добавить эту строку:

require("@fortawesome/fontawesome-free/js/all")

У меня это сработало! Я надеюсь, что это поможет другим!

person Pedro Paiva    schedule 14.06.2020
comment
Работал у меня. Спасибо! - person Cyrus; 03.09.2020
comment
Это сработало. Спасибо! - person Arun; 05.02.2021

Я пробовал Vicoar's, но он не работает в моем проекте, основанном на Ruby 1.9.3 и rails 3.2. Затем я переименовываю имя файла font-awesome.css в font-awesome.css.erb и меняю @font-face на это:

@font-face {
  font-family: "FontAwesome";
  src: url(<%= asset_path 'fontawesome-webfont.eot' %>);
  src: url(<%= asset_path 'fontawesome-webfont.eot' + '?#iefix' %>) format('eot'), url(<%= asset_path 'fontawesome-webfont.woff' %>) format('woff'), url(<%= asset_path 'fontawesome-webfont.ttf' %>) format('truetype'), url(<%= asset_path 'fontawesome-webfont.svg' + '#FontAwesome' %>) format('svg');
  font-weight: normal;
  font-style: normal;
}

Он работает очень хорошо, а код очень прост ... (вы можете обратиться к руководству asset_pipeline

person Tony Han    schedule 15.08.2012

Для рельсов 3.2. * Быстрое решение:

1) Поместите файлы font awesome в папку «fonts» в общей папке 2) Откройте font-awesome.css и измените 4 записи для «../fonts» на «/ fonts» в верхней части файла.

@font-face
{
     font-family:'FontAwesome';
     src:url('/fonts/fontawesome-webfont.eot?v=3.2.1');
     src:url('/fonts/fontawesome-webfont.eot?#iefix&v=3.2.1') 
     format('embedded-opentype'),url('/fonts/fontawesome-webfont.woff?v=3.2.1') 
     format('woff'),url('/fonts/fontawesome-webfont.ttf?v=3.2.1') 
     format('truetype'),url('../fonts/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1') 
     format('svg');
     font-weight:normal;
     font-style:normal;
}
[class^="icon-"],[class*=" icon-"]
{
     font-family:FontAwesome;
     font-weight:normal;
     font-style:normal;
     text-decoration:inherit;
     -webkit-font-smoothing:antialiased;
     *margin-right:.3em;
}  
person Tom    schedule 04.03.2014