2011-09-11 36 views
25

在CSS文件中,您可以通過使用獲得的圖像資產(與指紋)的正式名稱:使用Rails 3.1資產管道的JavaScript代碼中的圖像URL?

background-image: url(image-url("rails.png")) 

但你如何從一個JavaScript做同樣的文件?

+0

你能舉出一個在CSS和HTML中使用的例子嗎? – kzh

+2

@kzh,我已經做到了。 – Pablo

+2

你應該使用'background-image:image-url(「rails.png」)'。雖然與這個問題無關...... – raven

回答

48

我看到你正在使用sass helper方法。

在標準(非無禮的話),CSS,你做這樣的事情:

.class { background-image: url(<%= asset_path 'image.png' %>) }

CSS文件需要有ERB加入擴展:

file_name.css.erb

爲Javascript相同的規則適用:

file_name.js.erb

,並在文件中:

var image_path = '<%= asset_path 'image.png' %>'

Rails的asset pipeline guide是關於如何使用這些功能的信息的極好來源。

+6

答案,簡而言之就是使用erb。 – Pablo

2

在Rails 4,而是採用了js.erb鑑於我建議你堅持資產管道和URL傳遞給它一個變量,而不是使用坤或其他一些技術在討論:Ruby on Rails - Send JavaScript variable from controller to external Javascript asset file

隨着gon

應用/視圖/佈局/ application.html.erb:

<head> 
    <meta charset="utf-8"/> 
    <%= include_gon %> 

應用程序/控制器/ application_controller.rb:

before_filter { gon.path = asset_path 'image.png' } 

應用程序/資產/ Java腳本/ file.js.coffee:

alert gon.path 

這種方法更快,因爲文件在啓動時預編譯一次,得到服務器的,而不是通過Rails的服務,並且在相同的HTTP請求與其餘的Js相同。

相關問題