2012-01-23 2 views
7

В моих рельсах 3.1.3 приложения, я хотел бы, чтобы вставить некоторые ERB код в моем файла JavaScript, но это не разобраны по какой-то причине:Встраивание Еврорадио код JavaScript для трубопровода активов

# app/assets/javascripts/application.js 
//= require_tree ./shared 

# app/assets/javascripts/shared/shared.js.erb 
MM.loading = '<img src="<%= asset_path("icons/ajax-loader.gif") >">'; 

визуализируется как это в /application.js:

MM.loading = '<img src=" asset_path("icons/ajax-loader.gif") >">'; 

Я не вижу каких-либо дополнительных шагов в рельсах направляющие - есть то, что я не хватает? Btw Я использую haml для файлов вида, а также пробовал выше с .js.haml, прилагая к #{...}.

ответ

10

У вас есть синтаксическая ошибка в коде. Это:

MM.loading = '<img src="<%= asset_path("icons/ajax-loader.gif") >">'; 

должен быть таким:

MM.loading = '<img src="<%= asset_path("icons/ajax-loader.gif") %>">'; 

Вы отсутствовали закрывающий тег ERB для хелперов блока кода.

+0

А, хорошо заметили ... вот и все! – Zubin

+0

Ну ладно, взял меня два выстрела. –

-2

Добавьте расширение .erb к вашему application.js, и оно должно работать.

Содержимое необходимых файлов сначала включается, а затем обрабатывается в соответствии с расширениями манифеста.

+0

Хорошая идея, но не работает для меня. Пробовал 'console.log (" 1 + 1 = <% = puts 1 + 1%> ");' в 'shared.js.erb' после добавления' .erb' для манифеста имени файла. – Zubin

+0

Этого не требовалось. После фиксации скобок он работал без добавления файла .erb в имя файла манифеста. – Zubin

0

В Rails 4, вместо того, чтобы использовать js.erb мнение, я рекомендую вам придерживаться трубопровода активов по возможности, и передать переменные в Js, используя угольник или какой-либо другой техники обсуждался на: Ruby on Rails - Send JavaScript variable from controller to external Javascript asset file

С gon:

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

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

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

before_filter { gon.path = asset_path('icons/ajax-loader.gif') } 

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

MM.loading = '<img src="' + gon.path + '">'; 

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

Конкретное использование случай прохождения URL активов в Javascript был задан на: URL of images in JavaScript code using Rails 3.1 asset pipeline?

Смежные вопросы