从JavaScript获取资产路径

sen*_*nfo 20 ruby ruby-on-rails asset-pipeline js-routes

我需要在Rails资产管道中的HTML5画布上显示图像,但我需要知道JavaScript中资产的路径.我正在为应用程序的其他部分使用js-routes,但它似乎没有提供一种方法来获取资产管道中的某些东西.

从JavaScript获取Rails资产(例如图像)路径的正确方法是什么?

Bar*_*aun 23

在Rails Asset Pipeline指南中,他们通过使用ERB预处理样式表,提供了样式表中编码资产的示例.您可以使用与JavaScript相同的技术,假设您添加.erb到文件名的末尾:

var someAssetPath = "<%= asset_path('some_image.png') %>";
Run Code Online (Sandbox Code Playgroud)

  • 我个人认为这是一个可怕的建议,即使它是可行的.Rails不是一个JavaScript预编译器. (4认同)

pis*_*ruk 9

查看js_assets(rails项目中的Javascript助手) gem.我认为这正是你所需要的.

从文档:

在javascript中获取模板app/assets/javascripts/rubrics/views/index.html的路径: var path = asset_path('rubrics/views/index.html')


Mic*_*aev 6

对于那些使用HAML的人,您可以:

:javascript
   var assetPath = "#{asset_path('some_image.jpg')}";
Run Code Online (Sandbox Code Playgroud)


rya*_*on9 6

为什么不在.erb文件中的元素内添加数据属性,然后使用JQuery检索它?

在some_template.html.erb中

<%= content_tag(:div, "", id: 'some-id', data:{path_to_asset: asset_path("some_image.png")}) %>
Run Code Online (Sandbox Code Playgroud)

然后在some_javascript.js

var assetPath = $("#some-id").data("pathToAsset");
Run Code Online (Sandbox Code Playgroud)

  • 我也喜欢这个,因为如果你需要在你的图像路径中使用从javascript派生的变量,你就不能使用带有erb注入的资产路径. (2认同)

Art*_*bda 5

我在Rails 4.1中遇到了同样的问题,并在coffeescript中使用引用rails资产的图像.无需其他库.