2013-01-04 44 views
2

我想要得到的圖像的絕對URL在我的CSS如下:導軌 - 如何獲取資產的絕對URL在css.erb

"#{request.scheme}://#{request.host_with_port}/assets/image.png);" 

但我覺得請求屬性不能在CSS訪問.erb。任何人都可以告訴我,我還可以在我的css中獲得請求方案和host_with_port屬性嗎?

回答

1

您可以通過在應用程序配置中定義asset_host來定義「scheme」(更正確:protocol),主機和端口,儘管此定義將用於所有資產路徑。

指的上Asset Tag Helpers請求信息滑軌API文檔可用於:

ActionController::Base.asset_host = Proc.new { |source, request| 
     "#{request.protocol}#{request.host_with_port}" 
} 

如果需要爲不同類型的資產的不同值,可以定義的過濾標準,例如:

ActionController::Base.asset_host = Proc.new { |source| 
if source.starts_with?('/images') 
    "http://images.example.com" 
else 
    "http://assets.example.com" 
end 
} 
+0

通過將其內部試了一下environments/development.rb,但無法讓它工作。 – random

+0

請在您的環境/ development.rb中嘗試此操作:'config.action_controller.asset_host ...' –

+0

感謝您的幫助。我接受它,因爲它解決了問題。 Url被正確地替換了,但不幸的是它並沒有幫助解決我在另一個問題中提出的問題:http://stackoverflow.com/questions/14208403/rails-imgkit-issues-in-exporting-images-with-html -and-CSS – random

0

您可以使用絕對網址爲任何背景圖片或其他資源定義CSS。所以你可以在How to get absolute image paths in your css files using sass/scss之後動態生成它。

CSS

body { 
    background-image: image-url(background.png); 
} 

在您的環境文件,你改變它

config.action_controller.asset_host = "http://your.domain.com/" 

然後你的CSS看起來就像是:

body { 
    background-image: url(http://your.domain.com/assets/background.png); 
}