我有一個應該改變頁面背景的jquery函數。我希望背景是app/assets/images目錄中的圖像。但是,我對使用資產管道引用圖像的正確方式感到困惑。jquery函數中的引用rails圖像
這裏是我行現在:
$('body').css("background-image", "url('welcome.png')");
什麼是訪問的URL參數圖片的最佳方式是什麼?
我有一個應該改變頁面背景的jquery函數。我希望背景是app/assets/images目錄中的圖像。但是,我對使用資產管道引用圖像的正確方式感到困惑。jquery函數中的引用rails圖像
這裏是我行現在:
$('body').css("background-image", "url('welcome.png')");
什麼是訪問的URL參數圖片的最佳方式是什麼?
試試這個:
$('body').css("background-image", "url('/assets/welcome.png')");
爲了訪問在管道資產,你必須指定assets
文件夾。
我一直在試圖尋找在那裏我閱讀這一點,但基本上Rails的所有資產助手的URL轉換的東西像/assets/asset.png
或類似/assets/stylesheet.css
所以你應該能夠只指定在源URL的assets
文件夾做相同的。
我認爲它不適用於生產環境! – Ludovic
此解決方案已過時,我會在下面推薦@tirdadc的答案。 –
$('body').css("background-image", "url('/app/assets/images/welcome.png')");
?
假設應用程序位於文檔根目錄。
這是覆蓋在文檔中:
http://guides.rubyonrails.org/asset_pipeline.html#coding-links-to-assets
你應該使用在「2.3.3的JavaScript/CoffeeScript的再培訓局」,描述的方法這將意味着加入.erb擴展到您的JS文件,並使用asset_path。
另一種方法那是更優雅。將您的圖像移動到一個類定義在css.scss文件,然後將你的jQuery該類:
.welcome {
background-image: url(image-path('welcome.png'));
}
,並在您的jQuery:
$('body').addClass("welcome");
這是一個很好的答案,在javascript中修復url的值沒有問題。但是這個解決方案並不好,當我看到這個(明顯的)建議並改變了主意時,我就這樣走了。謝謝。 – 244an
在我看來,您需要使用.erb(嵌入式ruby)擴展來允許您的.js文件中的rails路徑助手。如果你的js文件(balabala.js例如)在資產/ javscripts /,更名爲balabala.js.erb,然後用:
$('body').css({"background-image":"<%= asset_path({'filenamehere.png') %>"});
要求在資產/ javscripts /應用此文件。 JS
//= require balabala
那麼它應該工作
有什麼不對您當前使用的方法是什麼?把相對於頁面的路徑放在圓括號之間:'url('app/assets/images/welcome.png')' –
你有沒有寶石「jquery-rails」? –