Sommes-nous censés utiliser autre chose que d' image-url
autres dans Rails 4? Ils renvoient des valeurs différentes qui ne semblent pas avoir de sens. Si je dois logo.png
en /app/assets/images/logo.png
et je fais ce qui suit, voici ce que je reçois:
image-url("logo.png") -> url("/images/logo.png") #obviously doesn't work
image-path("logo.png") -> "/images/logo.png"
asset-url("logo.png") -> url("/logo.png")
Bien sûr, aucun de ceux-ci ne fonctionne car ils ont besoin d'au moins /assets
devant.
MISE À JOUR : En fait, je viens de remarquer, comment accéder aux images dans Rails 4? J'ai une image à/app/assets/images/logo.png
. Mais si je vais à l'une des URL suivantes, je ne vois toujours pas mon image:
http://localhost:3000/assets/logo.png
http://localhost:3000/assets/images/logo.png
http://localhost:3000/logo.png
http://localhost:3000/images/logo.png
MISE À JOUR 2 : La seule façon dont je peux afficher monlogo.png
est de le déplacer dans le/app/assets/stylesheets
répertoire, puis de tirer vers le haut:
http://localhost:3000/assets/logo.png
asset_path("logo.png", image)
.css
fichier ou dans un.css.scss
fichier?.css.scss
fichierRéponses:
Je viens d'avoir ce problème moi-même. 3 points qui, espérons-le, aideront:
app/assets/images
répertoire, vous devriez pouvoir appeler l'image directement sans préfixe dans le chemin. c'est à dire.image_url('logo.png')
background-image:
propriété, votre ligne de code devrait êtrebackground-image: image-url('logo.png')
. Cela fonctionne pour les feuilles de style moins et sass. Si vous l'utilisez en ligne dans la vue, vous devrez utiliser l'image_tag
assistant intégré dans les rails pour générer votre image. Encore une fois, pas de préfixe<%= image_tag 'logo.png' %>
rake assets:precompile
pour générer vos actifs ourake assets:precompile RAILS_ENV=production
pour la production, sinon, votre environnement de production n'aura pas les actifs d'empreintes digitales lors du chargement de la page.Pour ces commandes au point 3, vous devrez également les préfixer
bundle exec
si vous exécutez bundler.la source
Votre première formulation
image_url('logo.png')
est correcte. Si l'image est trouvée, elle générera le chemin/assets/logo.png
(plus un hachage en production). Cependant, si Rails ne parvient pas à trouver l'image que vous avez nommée, elle reviendra/images/logo.png
.La question suivante est: pourquoi Rails ne trouve-t-il pas votre image? Si vous le mettez dans app / assets / images / logo.png, vous devriez pouvoir y accéder en accédant à
http://localhost:3000/assets/logo.png
.Si cela fonctionne, mais que votre CSS ne se met pas à jour, vous devrez peut-être vider le cache. Supprimez
tmp/cache/assets
de votre répertoire de projet et redémarrez le serveur (webrick, etc.).Si cela échoue, vous pouvez également essayer d'utiliser simplement
background-image: url(logo.png);
That pour que votre CSS recherche les fichiers avec le même chemin relatif (qui dans ce cas est / assets).la source
Je viens de découvrir qu'en utilisant un
asset_url
assistant, vous résolvez ce problème.la source
undefined local variable or method 'image'
erreur.asset_path("<your_path>", type: :image)
J'ai eu un problème similaire en essayant d'ajouter une image d'arrière-plan avec css en ligne. Inutile de spécifier le dossier images en raison du fonctionnement de la synchronisation des ressources.
Cela a fonctionné pour moi:
la source
assets/img.jpg
ou../assets/img.jpg
qui ne fonctionne évidemment dans aucun répertoire./assets/img.jpg
Est-ce que. TYRails 4.0.0 ressemblera à l'image définie avec
image-url
dans la même structure de répertoires que votre fichier css.Par exemple, si votre css est entré
assets/stylesheets/main.css.scss
,image-url('logo.png')
devienturl(/assets/logo.png)
.Si vous déplacez votre fichier css vers
assets/stylesheets/cpanel/main.css.scss
,image-url('logo.png')
devient/assets/cpanel/logo.png
.Si vous souhaitez utiliser l'image directement sous le répertoire assets / images, vous pouvez utiliser
asset-url('logo.png')
la source
pour les feuilles de style: url (asset_path ('image.jpg'))
la source
url(asset_path('image.jpg')
,url('image.jpg')
etimage-url('image.jpg')
? Je travaille avec Rails 5.0.0.1 eturl()
fonctionne très bien dans SCSS fichiers et html.erb fichiers j'utiliserasset_path()
donc je voudrais savoir la bonne façon d'aller. Merci d'avance.asset_path
ajouter au fichier image une annexe de résumé. C'est en fait pour la production, après chaque déploiement, l'annexe a digest sera modifiée et le navigateur de l'utilisateur téléchargera une nouvelle version des images.