2012-11-15 49 views
15

我需要一個HTML5畫布是在Rails的資產管線上顯示圖像,但我需要知道從JavaScript資產的路徑。我使用js-routes的應用程序的其他部分,但它似乎並沒有提供一種方式來獲得在資產管道東西的路徑。採集資源路徑從JavaScript

什麼是獲得的路徑,從JavaScript Rails的資產(例如,圖像)的正確方法?

回答

18

在軌道Asset Pipeline guide,他們給通過預處理與僱員再培訓局的樣式表編碼在樣式表中資產的例子。您可以使用相同的技術用JavaScript,假設你釘一個.erb到文件名末尾:

var someAssetPath = "<%= asset_path('some_image.png') %>"; 
+0

謝謝你的快速反應裏面....我想過這樣做,但可能有許多不同資產我想要的路徑,所以這可能會變得繁瑣,併成爲一個維護的惡夢,因爲資產添加或刪除。我也考慮過創建我自己的操作方法來返回提供的資產名稱的URL,但我希望找到一個更好的選擇。 – senfo

+4

我個人認爲這是一個可怕的建議,儘管它是可行的。 Rails不打算成爲JavaScript預編譯器。 –

+1

@ArxPoetica,那麼他們爲什麼要採用編譯爲JavaScript的CoffeeScript呢? – Mischa

6

結帳的js_assets(Javascript helper in rails projects)寶石。 我認爲這正是你需要的。

從文檔:

獲取路徑模板應用程序/資產/ Java腳本/評鑑/視圖/ index.html的在javascript: var path = asset_path('rubrics/views/index.html')

5

對於那些使用HAML可以做:

:javascript 
    var assetPath = "#{asset_path('some_image.jpg')}"; 
+1

我不得不用雙引號使它工作,但是感謝讓我走上了正軌。 – cubsker

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"); 
+0

我有點像這個建議。而不是將.erb添加到您的js文件中。 – kev

+1

我喜歡這個太,因爲如果你需要使用從JavaScript衍生變量在你的圖像路徑,您不能使用的資源路徑與僱員再培訓局注入。 –