J'ai mis toutes mes images pour mon thème d'administration dans le dossier des actifs dans un dossier appelé admin. Ensuite, je lie comme normal ie.
# Ruby
image_tag "admin/file.jpg" .....
#CSS
.logo{ background:url('/assets/images/admin/logo.png');
FYI. Juste pour tester, je n'utilise pas encore la balise asset_path car je n'ai pas compilé mes actifs.
Ok tout va bien jusqu'à ce que je décide de mettre à jour une image. J'ai remplacé certaines couleurs mais lors du rechargement, la nouvelle image stylisée ne s'affiche pas. Si je regarde l'image directement dans le navigateur, elle affiche toujours l'ancienne image. Pour aller plus loin, j'ai détruit le dossier des images d'administration. Mais il n'a rien cassé toutes les images sont toujours affichées. Et oui, j'ai effacé mon cache et essayé plusieurs navigateurs.
Existe-t-il une sorte de mise en cache d'images? Il ne s'agit que d'un développement local utilisant pow pour servir les pages.
Même en détruisant tout le dossier d'images, les images sont toujours servies.
Est-ce que je manque quelque chose?
Réponses:
En 3.1, vous supprimez simplement la partie «images» du chemin. Ainsi, une image qui vit dans
/assets/images/example.png
sera en fait accessible dans une demande d'obtention à cette URL -/assets/example.png
Étant donné que le
assets/images
dossier est généré avec une nouvelle application 3.1, c'est la convention qu'ils souhaitent probablement que vous suiviez. Je pense que c'est là que jeimage_tag
vais le chercher, mais je ne l'ai pas encore testé.De plus, lors de la keynote de RailsConf, je me souviens que D2h avait dit que le
public folder
ne devrait plus contenir grand chose, principalement des pages d'erreur et un favicon.la source
Vous voulez changer l'extension de votre fichier CSS de
.css.scss
à.css.scss.erb
ne pas manquer:Vous devrez peut-être effectuer une "actualisation matérielle" pour voir les modifications. CMD + SHIFT + R sur les navigateurs OSX.
En production, assurez-vous
se produit lors du déploiement.
la source
.css
à.css.erb
(après les avoir déplacéesapp/assets
pour obtenir le traitement erb sans sass.Pour ce que ça vaut, quand j'ai fait cela, j'ai trouvé qu'aucun dossier ne devrait être inclus dans le chemin du fichier css. Par exemple, si je l'ai
app/assets/images/example.png
, et je mets cela dans mon fichier css ...... alors en quelque sorte cela fonctionne comme par magie. Je me suis dit cela en exécutant la
rake assets:precompile
tâche, qui aspire tout simplement hors de tous vos chemins de charge et décharges dans un dossier de tiroir d'ordure:public/assets
. C'est ironique, IMO ...Dans tous les cas, cela signifie que vous n'avez pas besoin de mettre de chemins de dossier, tout ce qui se trouve dans vos dossiers d'actifs finira par vivre dans un énorme répertoire. La manière dont ce système résout les conflits de noms de fichiers n'est pas claire, vous devrez peut-être faire attention à cela.
Un peu frustrant, il n'y a pas de meilleurs documents pour ce grand changement.
la source
asset_path()
assistant et en spécifiant le répertoire.Dans rails 4, vous pouvez maintenant utiliser une image-url d'aide css et sass:
Si vos images d'arrière-plan ne s'affichent pas, envisagez de voir comment vous les référencez dans vos feuilles de style.
la source
div.logo {background: image-url("logo.png") no-repeat center;}
lors du référencement d'images en CSS ou dans une balise IMG, utilisez image-name.jpg
alors que l'image est vraiment située sous ./assets/images/image-name.jpg
la source
background: url('sort_asc_disabled.png')
fonctionne pour le fichier app / assets / images / sort_asc_disabled.png.http://railscasts.com/episodes/279-understanding-the-asset-pipeline
Ce railscast (tutoriel sur les rails vidéo sur le pipeline d'actifs) aide également beaucoup à expliquer les chemins dans le pipeline d'actifs. Je l'ai trouvé assez utile et je l'ai regardé plusieurs fois.
La solution que j'ai choisie est celle de @Lee McAlilly ci-dessus, mais ce railcast m'a aidé à comprendre pourquoi cela fonctionne. J'espère que ça aide!
la source
Le pipeline d'actifs dans les rails offre une méthode pour cette chose exacte.
Vous ajoutez simplement image_path ('image filename') à votre fichier css ou scss et rails s'occupe de tout. Par exemple:
.logo{ background:url(image_path('admin/logo.png'));
(notez que cela fonctionne comme dans une vue .erb, et que vous n'utilisez pas "/ assets" ou "/ assets / images" dans le chemin)
Rails propose également d'autres méthodes d'assistance, et il y a une autre réponse ici: Comment utiliser des images de référence dans Sass lorsque j'utilise Rails 3.1?
la source