URL-адрес изображений в коде JavaScript с использованием конвейера Rails 3.1?
В файлах CSS вы можете получить собственное имя ресурса изображения (с помощью отпечатка пальца), используя:
background-image: url(image-url("rails.png"))
но как вы делаете то же самое из файла JavaScript?
Ответы
Ответ 1
Я вижу, что вы используете метод sass helper.
В стандартном (не Sass) CSS вы делаете что-то вроде этого:
.class { background-image: url(<%= asset_path 'image.png' %>) }
В файле CSS должен быть добавлен erb для расширений:
file_name.css.erb
Для javascript применяются те же правила:
file_name.js.erb
и в файле:
var image_path = '<%= asset_path 'image.png' %>'
The 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-запросу, что и остальные Js.