我需要在Rails资产管道中的HTML5画布上显示图像,但我需要知道JavaScript中资产的路径。我正在将js-routes用于应用程序的其他部分,但它似乎没有提供一种方法来获取资产管道中的某些内容。
从JavaScript获取Rails资产(例如图像)路径的正确方法是什么?
答案 0 :(得分:23)
在Rails Asset Pipeline guide中,他们通过使用ERB预处理样式表来举例说明样式表中的资产编码。您可以使用与JavaScript相同的技术,假设您在文件名末尾加.erb
:
var someAssetPath = "<%= asset_path('some_image.png') %>";
答案 1 :(得分:8)
结帐js_assets(Javascript helper in rails projects)宝石。 我认为这正是你所需要的。
来自文档:
在javascript中获取模板app / assets / javascripts / rubrics / views / index.html的路径:
var path = asset_path('rubrics/views/index.html')
答案 2 :(得分:6)
对于那些使用HAML的人,你可以这样做:
:javascript
var assetPath = "#{asset_path('some_image.jpg')}";
答案 3 :(得分:6)
为什么不在.erb文件中的元素内添加数据属性,然后使用JQuery检索它?
在some_template.html.erb
中<%= content_tag(:div, "", id: 'some-id', data:{path_to_asset: asset_path("some_image.png")}) %>
然后在some_javascript.js
var assetPath = $("#some-id").data("pathToAsset");
答案 4 :(得分:5)
我在Rails 4.1中遇到了同样的问题,并使用referencing rails assets in coffeescript作为图像。不需要额外的库。
答案 5 :(得分:0)
在我的情况下,我想获取样式表路径,并且rails为缓存清除而生成的哈希使得无法进行硬编码。
最终对我来说很好的工作是为html(布局)中的主样式表链接元素分配一个ID,然后使用javascript提取href。如果您想要基本资产路径,则可以使用所需的数据作为属性来创建通用元素。
呈现的HTML
<link rel="stylesheet" href="mypath/main.css" type="text/css" id="main-css">
JS
$("#main-css").attr("href"); // "mypath/main.css"