¿Se supone que debemos usar algo más aparte de image-url
y otros en Rails 4? Devuelven valores diferentes que no parecen tener sentido. Si tengo logo.png
en /app/assets/images/logo.png
y hago lo siguiente, esto es lo que me sale:
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")
Por supuesto que ninguno de estos funciona porque necesitan al menos /assets
de frente.
ACTUALIZACIÓN : En realidad, acabo de notar, ¿cómo accedo a las imágenes en Rails 4? Tengo una imagen en/app/assets/images/logo.png
. Pero si voy a cualquiera de las siguientes URL, sigo sin ver mi imagen:
http://localhost:3000/assets/logo.png
http://localhost:3000/assets/images/logo.png
http://localhost:3000/logo.png
http://localhost:3000/images/logo.png
ACTUALIZACIÓN 2 : La única forma en que puedo abrir milogo.png
es moviéndolo al/app/assets/stylesheets
directorio y luego tirando hacia arriba:
http://localhost:3000/assets/logo.png
asset_path("logo.png", image)
.css
archivo o en un.css.scss
archivo?.css.scss
archivoRespuestas:
Yo solo tuve este problema. 3 puntos que con suerte ayudarán:
app/assets/images
directorio, entonces debería poder llamar a la imagen directamente sin prefijo en la ruta. es decir.image_url('logo.png')
background-image:
propiedad, entonces su línea de código debería serbackground-image: image-url('logo.png')
. Esto funciona tanto para hojas de estilo menos como para sass. Si lo está usando en línea en la vista, entonces necesitará usar elimage_tag
asistente integrado en rieles para generar su imagen. Una vez más, sin prefijos<%= image_tag 'logo.png' %>
rake assets:precompile
para generar sus activos orake assets:precompile RAILS_ENV=production
para producción; de lo contrario, su entorno de producción no tendrá los activos con huellas digitales cuando cargue la página.También para esos comandos en el punto 3, necesitará prefijarlos
bundle exec
si está ejecutando bundler.fuente
Su primera formulación
image_url('logo.png')
, es correcta. Si se encuentra la imagen, generará la ruta/assets/logo.png
(más un hash en producción). Sin embargo, si Rails no puede encontrar la imagen que nombró, recurrirá a ella/images/logo.png
.La siguiente pregunta es: ¿por qué Rails no encuentra tu imagen? Si lo pone en app / assets / images / logo.png, debería poder acceder a él yendo a
http://localhost:3000/assets/logo.png
.Si eso funciona, pero su CSS no se actualiza, es posible que deba borrar el caché. Elimine
tmp/cache/assets
del directorio de su proyecto y reinicie el servidor (webrick, etc.).Si eso falla, también puede intentar usar
background-image: url(logo.png);
Eso hará que su CSS busque archivos con la misma ruta relativa (que en este caso es / assets).fuente
Acabo de descubrir que al usar
asset_url
helper se resuelve ese problema.fuente
undefined local variable or method 'image'
error.asset_path("<your_path>", type: :image)
Tuve un problema similar al intentar agregar una imagen de fondo con CSS en línea. No es necesario especificar la carpeta de imágenes debido a la forma en que funciona la sincronización de activos.
Esto funcionó para mí:
fuente
assets/img.jpg
o../assets/img.jpg
que obviamente no funciona en ningún directorio./assets/img.jpg
hace. TYRails 4.0.0 verá la imagen definida con la
image-url
misma estructura de directorio con su archivo css.Por ejemplo, si el CSS en
assets/stylesheets/main.css.scss
,image-url('logo.png')
vuelveurl(/assets/logo.png)
.Si mueve su archivo css a
assets/stylesheets/cpanel/main.css.scss
, seimage-url('logo.png')
convierte en/assets/cpanel/logo.png
.Si desea usar la imagen directamente en el directorio assets / images, puede usar
asset-url('logo.png')
fuente
para hojas de estilo: url (asset_path ('image.jpg'))
fuente
url(asset_path('image.jpg')
,url('image.jpg')
yimage-url('image.jpg')
? Estoy trabajando con Rails 5.0.0.1 yurl()
funciona bien en archivos SCSS y en archivos html.erb que uso,asset_path()
así que me gustaría saber cuál es el camino correcto a seguir. Gracias por adelantado.asset_path
agregue al archivo de imagen un apéndice de resumen. En realidad, es para producción, después de cada implementación, se cambiará el apéndice de un resumen y el navegador del usuario descargará una nueva versión de las imágenes.