Как я могу получить доступ к Rails asset_path в шаблоне JST Underscore?

Мне нужно получить доступ к asset_path моих изображений из шаблона JST, который используется моим интерфейсом для рендеринга с помощью шаблонов Underscore.

Например:

filter_item.jst.ejs

<div class="filter-item">
    <a href="#" class="thumbnail filter-select" data-preset="<%= preset %>">
        <img src="<%= asset_path('balloons.jpg') %>"><br/>
    </a>
</div>

Как мне разрешить 'asset_path' из моего шаблона, чтобы использовать конвейер ресурсов Rails? В то же время я хочу иметь возможность передавать переменную 'preset' из шаблона Underscore во время выполнения.

Пример:

var rendered = JST ["myapp / templates / filter_item"] ({preset: "mypreset"});

Я ожидаю, что 'Rendered' будет содержать HTML следующим образом:

<div class="filter-item">
    <a href="#" class="thumbnail filter-select" data-preset="mypreset">
        <img src="/assets/balloons-ASSETHASH.jpg"><br/>
    </a>
</div>

1 ответ

Решение

Несколько месяцев назад, но я сам недавно с этим боролся. Нашел ответ на странице github для звездочек

Добавьте расширение .str к вашим файлам, и вы можете использовать методы ruby ​​/ rails внутри тегов интерполяции строк: #{ ... }

Поэтому приведенный выше код, модифицированный для использования интерполяции строк, будет работать:

// filter_item.jst.ejs.str

<div class="filter-item">
    <a href="#" class="thumbnail filter-select" data-preset="mypreset">
       <img src="#{ asset_path('balloons.jpg') }"><br/>
    </a>
</div>

Для data-preset Я не достаточно знаком с тем, как работает конвейер активов, чтобы сказать, будет ли работать вышеуказанный метод для этого.

Другие вопросы по тегам