sass-rails aides “image url”, “asset-url” ne travaillent pas dans les rails 3.2.1
Je suis sur 3.2.1, avec sass-rails-3.2.4 et sass-3.1.15...
La documentation pour l'asset pipeline dit:
asset-url("rails.png", image) becomes url(/assets/rails.png)
image-url("rails.png") becomes url(/assets/rails.png)
...
J'ai donc fait le fichier suivant:
# app/assets/stylesheets/public/omg.css.sass
body
background: asset-url('snake.gif', image)
#lol
background: image-url('snake.gif')
et lorsque je visite localhost:3000/assets/public/omg.css-je obtenir:
body {
background: asset-url("snake.gif", image); }
#lol {
background: image-url("snake.gif"); }
... J'ai aussi essayé de changer le fichier omg.css.scss et changé la syntaxe:
# app/assets/stylesheets/public/omg.css.scss
body {
background: asset-url('snake.gif', image);
}
#lol {
background: image-url('snake.gif');
}
mais d'obtenir les mêmes résultats... quelqu'un a une idée de pourquoi ces aides ne sont pas de travail?
- Avez-vous jamais trouver une solution pour cela?
- Mon projet a 2 feuilles de style (un pour la page web & un pour l'application). Je vais avoir ce problème sur l'un, mais pas sur l'autre?
Vous devez vous connecter pour publier un commentaire.
Malgré ce que dit la documentation, il semble que les options par défaut dans les rails 3.2.6 vous permettre de simplement faire fonctionner les choses, avec encore moins d'informations de chemin d'accès dans votre CSS.
E. g.
../app/assets/images/rails.png
est des références dans votre exemple.css.scss fichier avec quelque chose comme:background: white url(rails.png) repeat-y;
Vous n'incluez pas le
image-url
ouasset-url
dans votre scss (autant que je sache), tout simplementurl(your_image.png)
. Le peu de documentation semble être juste une explication de ce qu'il fait en arrière-plan.url(rails.png)
ne pas utiliser les empreintes digitales, la version de l'actif de fichier. Dans notre .css.scss les fichiers nécessaires à l'utilisation debackground: image_url('my-image.png')
.rake assets:precompile
. Vous avez besoin d'avoir l'environnement de production, comme ceRAILS_ENV=production rake assets:precompile
sinon il va tout simplement de générer les actifs des liens pour le développement de la mode.RAILS_ENV=production rake assets:precompile
Quand j'ai frappé ce problème, c'était parce que je n'avait pas inclus le fichier css dans l'asset pipeline pour la pré-compilation. En conséquence, il pourrait être générée lors de l'exécution. Parce que le sass-gem rails est souvent dans l' :les actifs du groupe, les aidants sont pas disponibles lors de la génération des fichiers css lors de l'exécution.
Essayez d'ajouter la ligne suivante à votre application.rb (ou de la production.rb):
J'ai trouvé la solution sur ce post y compris un piège autour de nommer les fichiers en les ajoutant à la précompilateur.
Si vous avez mis à jour votre application Rails 3.1, dans le passé, assurez-vous que vous avez changé votre application.rb fichier de
à
Voir cette railscast sur la mise à niveau des Rails 3.1, et l'ajout de l'asset pipeline.
Mise à jour: Rails 4 remonte à l'ancienne façon de faire. Grâce Aaron Gray!
Avez-vous activé l'asset pipeline dans
application.rb
?Vous n'avez droit en définissant l'extension sur votre Sass feuilles de style, à
.css.scss
. Qui vous permet de Rails pour savoir à analyser le fichier avec Sass d'abord avant qu'il émet le contenu CSS.config/environments/development.rb
?Vous voudrez peut-être essayer de compensation /tmp/cache. Je suis trop nouveau sur les Rails et Sass savoir pourquoi cela a fonctionné, mais il a résolu le même problème pour moi, après des heures de recherche.
BTW, cela a fonctionné malgré le fait que j'ai pu voir d'autres Sass directives, telles que la définition des variables et calcul avec eux, en cours d'exécution. Je suis sûr qu'il y est une explication très simple, une fois que j'ai le temps pour le retrouver.
J'ai fait le changement suggéré par @Ryan, ainsi que la mise à niveau de sass-rails:
sass 3.2.6 travaillé pour moi, tandis que 3.2.5 n'a pas.
Nous avons juste eu le même problème et il fixe explicitement nécessitant des pignons dans le Gemfile (même si c'est une dépendance de ActionPack):
Je ne sais pas pourquoi, mais ça fonctionne maintenant. 😉
J'ai été frapper ma tête contre ce pour jours. La seule solution qui a fonctionné pour moi a été comme suit:
Si cela ne résout pas le problème, ajoutez le code suivant dans un nouveau fichier dans le répertoire config/initializers/a appelé quelque chose comme "horrible_sass_patch.rb":
Note: Ceci nécessite que vous utilisez la fonction "active" Bundler mécanisme de chargement, par exemple, votre application.rb utilise les éléments suivants:
... et si vos feuilles de style sont au vendeur, assurez-vous qu'ils sont inclus dans le Sass de configuration:
Vous pouvez simplement ajouter un trailing slash
/
le chemin d'accès et d'utilisationurl
comme vous le faites habituellement.