Подтвердить что ты не робот

URL-адрес изображений в коде JavaScript с использованием конвейера Rails 3.1?

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

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

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

4b9b3361

Ответ 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.