2012-01-26 46 views
28

我在ruby中生成了一個腳手架,我想爲網站上的每個頁面插入一個背景圖片,但我不知道該圖片的鏈接應該是什麼。在CSS中的Ruby on Rails 2中添加背景圖片

我的形象是app/assets/images/"dep.jpg"

這是我有,但它不是工作:

background-image:url('../images/dep.jpg'); 
} 

任何幫助嗎?謝謝

+0

嘗試給出確切的路徑。因爲即使文件夾'/ public'也有'images'文件夾,我認爲它看起來那裏而不是你的路徑 – uday

+0

這取決於你的文件在哪裏,相對於你的圖像目錄。 '../'表示從當前文件位置向上移動一個目錄並查找圖像目錄。你的目錄結構是什麼樣的? –

+0

我的rails項目文件夾叫做ClassSchedule/apps/assets/images/dep.jpg – Dan

回答

19

在rails中的網絡服務器需要public文件夾作爲應用程序的基礎。因此,它尋找/public/images/下的具體圖像,而不是app/assets/images/"dep.jpg" &因爲它不存在那裏你不能得到的圖像。嘗試將你的圖片放在/public/images/文件夾中,然後它就可以工作。

編輯:如果您使用的鋼軌3.1然後像Rails 3.1使用您的應用程序的資產資產管線的概念,這樣的話那麼路徑app/assets/images/dep.jpg顯然這個工作將是不同的。

+0

即時通訊的新類型,所以我不知道公用文件夾的位置。即時通訊只使用rails服務器在本地主機上運行此文件 – Dan

+0

「公共」文件夾存在於「rails」應用程序的根文件夾中。層次結構像'/public/images' – uday

+0

我的公共文件夾沒有圖像文件夾,我應該做一個還是應該放在公用文件夾中? – Dan

1

,可以使用絕對路徑肯定的:

background-image:url('/images/dep.jpg'); 
+0

我想知道,因爲Rails將'public'作爲basefolder,所以即使他應用了絕對路徑,它也不會工作,除非&直到文件被網絡服務器通過一些奇怪的調整重新啓動後,你不覺得? – uday

77

在Rails 3.1,將路徑實際上是`/assets/dep.jpg「:

background-image: url(/assets/dep.jpg); 

如果您轉換您的腳手架。 css文件到薩斯文件(重命名爲scaffold.css.scss),那麼你可以使用助手:

background-image: image-url("dep.jpg"); 
11

如果你的形象是在app/assets/images/dep.jpg,然後在rails的css文件中,您應該編寫background: url('/assets/dep.jpg');

您不必以這種方式將圖像置於公用文件夾中。

2

background:url('/ assets/image_name.jpg');

這個工作對我的Rails 4.0

+0

Ruby 4.0 ???認真..請將其更改爲Rails如果您的意思是Rails 4 – Abhinay

+1

聲音,它是我的第一天 – laffan

+0

酷! Rails的方式是:) – Abhinay

0

如果您正在使用的軌道的現代版(3.1或更高版本我相信),你可以使用:

background: url('../dep.jpg'); 

由於CSS也住在你的資產文件夾..自動引用資產文件夾。