从JavaScript获取资产路径

时间:2012-11-15 15:55:53

标签: ruby-on-rails ruby asset-pipeline js-routes

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

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

6 个答案:

答案 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"