web-dev-qa-db-fra.com

Ajout d'une image de fond dans Ruby on Rails 2 en CSS

J'ai généré un échafaudage en Ruby et je souhaite insérer une image d'arrière-plan sur chaque page du site, mais je ne suis pas certain du lien qui doit être créé avec l'image. 

mon image est en app/assets/images/"dep.jpg"

c'est ce que j'ai mais ça ne marche pas:

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

De l'aide? Merci

28
Dan

Le serveur Web dans Rails utilise le dossier public comme base de l'application. Par conséquent, il recherche l'image spécifique sous /public/images/ au lieu de app/assets/images/"dep.jpg" et, puisque ce n'est pas là-bas, vous ne pouvez pas obtenir l'image. Essayez de mettre votre image dans le dossier /public/images/ pour que cela fonctionne.

Edit: Si vous utilisez Rails 3.1, il en ira différemment, car Rails 3.1 utilise le concept de pipeline d'actifs pour les actifs de votre application. Dans ce cas, le chemin app/assets/images/dep.jpg fonctionnerait évidemment.

19
uday

Dans Rails 3.1, le chemin sera réellement `/assets/dep.jpg ':

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

Si vous convertissez votre fichier scaffold.css en un fichier Sass (renommé en scaffold.css.scss), vous pouvez utiliser l’aide suivante:

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

Si votre image est dans app/assets/images/dep.jpg, dans le fichier css de Rails, vous devez écrire background: url('/assets/dep.jpg');

Vous n'êtes pas obligé de mettre l'image dans le dossier public de cette façon. 

11
user1187135

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

Cela a fonctionné pour moi dans Rails 4.0

2
laffan

Vous pouvez utiliser le chemin absolu à coup sûr:

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

Si vous utilisez une version moderne de Rails (3.1 ou plus récente, je crois), vous pouvez utiliser:

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

Puisque le fichier css vit également dans votre dossier d’actifs, .. fait automatiquement référence au dossier d’actifs.

0
Wylliam Judd