URL изображений в коде JavaScript с использованием конвейера ресурсов Rails 3.1? - PullRequest
26 голосов
/ 12 сентября 2011

В файлах CSS вы можете получить правильное имя ресурса изображения (с отпечатком пальца), используя:

background-image: url(image-url("rails.png"))

, но как вы можете сделать то же самое из файла JavaScript?

Ответы [ 2 ]

49 голосов
/ 12 сентября 2011

Я вижу, вы используете метод sass helper.

В стандартном (не Sass) CSS вы делаете что-то вроде этого:

.class { background-image: url(<%= asset_path 'image.png' %>) }

Файл CSSк расширениям необходимо добавить erb:

file_name.css.erb

Для javascript применяются те же правила:

file_name.js.erb

и вfile:

var image_path = '<%= asset_path 'image.png' %>'

Руководство по конвейеру ресурсов Rails является отличным источником информации о том, как использовать эти функции.

2 голосов

В Rails 4 вместо использования js.erb я рекомендую придерживаться конвейера ресурсов и передавать URL-адрес ему с переменной вместо использования gon или другого метода, обсуждаемого по адресу: Ruby on Rails - Отправить переменную JavaScript из контроллера во внешний файл ресурсов Javascript

С gon:

приложение / просмотров / макеты / application.html.erb:

<head>
  <meta charset="utf-8"/>
  <%= include_gon %>

приложение / контроллеры / application_controller.rb:

before_filter { gon.path = asset_path 'image.png' }

Приложение / активы / JavaScripts / file.js.coffee:

alert gon.path

Этот метод быстрее, потому что файл при компиляции прекомпилируется только один раз, обслуживается сервером, а не через Rails, и по тому же HTTP-запросу, что и остальные J.

...