2015-09-26 19 views
0

該圖片是坐落在assets/images/new_design/new_img1.png如何從子文件夾中的Rails 4中的* .css.scss文件渲染圖像?

new_layout.css.scss文件,我有以下行:

.top_bg { 
    background-image: url("/assets/new_design/new_img1.png"); 
    ... 
} 

但圖像不會被渲染。我試過也:

  1. background-image: image-url("/assets/new_design/new_img1.png");
  2. background-image: url("/assets/new_design/new_img1.png");
  3. background-image: url("new_design/new_img1.png");

但這些都不奏效。在本地主機上,我能夠使用第三種方法成功呈現它,但我不知道如何在生產服務器上執行此操作。

任何幫助表示感謝,謝謝!

回答

0

放置在/ assets /文件夾中的圖像使用資產管道進入Rails。所以,如果你想訪問它們,你需要將.erb添加到你的文件中,這樣你就可以將一些ruby放到你的css文件中,這些文件將被rails評估。

變化new_layout.css.scss到new_layout.css.scss.erb

現在,你已經有了可以運行助手文件,使用圖像助手來生成圖像的路徑:

background-image: url(<%= asset_path 'new_design/new_img1.png' %>); 

應該工作。這使用資產路徑助手,通過資產文件夾查看適當的資源並創建直接鏈接。

如果您希望直接訪問沒有管道的圖像,可以將它們放置在應用程序的公用文件夾中,但是這會丟失使用資產管道的價值。

作爲一項補充,對於生產......如果您的流程在啓動時不包含此步驟,則可能需要在推送到生產之前預先編譯您的資產。

運行以下預編譯的資產:

rake assets:precompile 
+0

嘗試過,不幸的是不起作用。 – user984621

+0

所以這是在產品或本地或兩者都失敗?你可以檢查元素,看看實際上連接了什麼路徑嗎?它在產品中引發異常嗎?比「不起作用」更多的信息可以幫助找出問題所在。 圖片位於app/assets/images/new_design/new_img1.png中,還是連接了根級資產文件夾? – gregdizzia

0

我以前有同樣的問題,並且已經能夠在我的

app/assets/images

有我的形象脫身目錄並且能夠使用

background-image: image-url("project-image.jpg");

順便說一句。在生產模式下,資產默認由資產管道預編譯。包含在application.jsapplication.css資產清單中的所有文件都被壓縮並連接到位於public/assets文件夾中的同名文件中。

另外,要包含其他資產,您可以使用config.assets.precompile配置設置來指定它們。 ```config.assets.precompile + =%w(some-name.css)