如何在 JST Underscore 模板中访问 Rails asset_path?

How can I access Rails asset_path in a JST Underscore template?

我需要从 JST 模板访问我的图像 asset_path,我的前端使用该模板使用 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 资产管道?同时,我希望能够在 运行 时间从 Underscore 模板传入变量 'preset'。

示例:

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>

几个月大了,但最近我自己也为此苦苦挣扎。 Found the answer on the github page for sprockets

将扩展名 .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 变量,我对资产管道的工作原理还不够熟悉,无法判断上述方法是否适用。