在Ruby on Rails 2中使用CSS添加背景图片

28

我在 Ruby 中生成了一个脚手架,我想在网站的每个页面中插入背景图片,但是我不确定图片的链接应该是什么。

我的图片位于 app/assets/images/"dep.jpg"

这是我的代码,但它没有起作用:

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

有人能帮忙吗?谢谢


尝试提供精确的路径。因为即使文件夹/public有一个images文件夹,我认为它正在那里查找而不是你的路径。 - uday
这取决于您的文件相对于图像目录的位置。../表示从当前文件位置向上一个目录,并查找一个名为 images 的目录。您的目录结构是什么样的? - Matt K
我的Rails项目文件夹名为ClassSchedule/apps/assets/images/dep.jpg。 - Dan
1
这行代码所在的文件在哪里:background-image:url('../images/dep.jpg'); - Matt K
在我的CSS文件中,位于ClassSchedule/apps/assets/stylesheets/scaffold.css。 - Dan
6个回答

77
在Rails 3.1中,路径实际上将会是`/assets/dep.jpg':
background-image: url(/assets/dep.jpg);

如果你将scaffold.css文件转换为Sass文件(重命名为scaffold.css.scss),那么你可以使用这个帮助器:

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

19
Rails中的web服务器将public文件夹作为应用程序的基础。因此,它在/public/images/下寻找特定的图像,而不是app/assets/images/"dep.jpg", 因为该图像没有在那里,所以您无法获得该图像。尝试将图像放在/public/images/文件夹中,然后它就可以工作了。
编辑:如果您使用的是Rails 3.1,则情况会有所不同,因为Rails 3.1针对应用程序的资产使用了资产管道(asset pipeline)的概念,所以路径app/assets/images/dep.jpg显然会起作用。

我对Rails还比较新,不太清楚公共文件夹在哪里。我只是在本地主机上使用Rails服务器运行它。 - Dan
public 文件夹位于 rails 应用程序的根目录中。层次结构如下:<yourrailsappname>/public/images - uday
我的公共文件夹中没有图片文件夹,我应该创建一个还是直接放在公共文件夹中? - Dan
创建一个名为 images 的文件夹并将其放置在那里,这样你就可以把所有的 image-type 文件都放在同一个地方了。 - uday
这与CSS有关。你需要将一个属性设置为no-repeat,就像这样。并且,如果我的回答对你有帮助,请不要忘记给我评分。 - uday
这完全绕过了Rails 3.1的新资产处理功能...它可以工作,但需要您将图像保留在非默认位置。 - Dylan Markow

11
如果你的图片在 app/assets/images/dep.jpg,那么在 Rails 的 CSS 文件中,你应该写成 background: url('/assets/dep.jpg'); 这样就不需要把图片放在 public 文件夹里了。

2

背景:url('/assets/image_name.jpg');

这个方法适用于我使用的Rails 4.0版本。


1
声音,这是我的第一天。 - laffan
酷!这就是 Rails 的方式 :) - Abhinay

1

你肯定可以使用绝对路径:

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

我在想,由于Rails以public作为基础文件夹,即使他应用绝对路径,除非通过某些奇怪的调整,Web服务器可以访问到该文件,否则它也不会起作用,你觉得呢? - uday

0
如果您正在使用现代版本的Rails(我相信是3.1或更高版本),您可以使用以下代码:
background: url('../dep.jpg');

由于 CSS 文件也位于您的资产文件夹中,.. 将自动引用资产文件夹。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接