He puesto todas mis imágenes para mi tema de administrador en la carpeta de activos dentro de una carpeta llamada admin. Luego lo enlazo como normal, es decir.
# Ruby
image_tag "admin/file.jpg" .....
#CSS
.logo{ background:url('/assets/images/admin/logo.png');
FYI. Solo para probar, todavía no estoy usando la etiqueta asset_path, ya que no he compilado mis activos.
Ok, todo bien hasta ahora hasta que decidí actualizar una imagen. Reemplacé algunos colores pero al recargar la nueva imagen con estilo no se muestra. Si veo la imagen directamente en el navegador, sigue mostrando la imagen anterior. Yendo un paso más allá, destruí la carpeta de imágenes de administrador. Pero no ha roto nada, todas las imágenes todavía se muestran. Y sí, borré mi caché y probé en varios navegadores.
¿Hay algún tipo de almacenamiento en caché de imágenes? Esto es solo un desarrollo local que usa pow para servir las páginas.
Incluso destruyendo toda la carpeta de imágenes, las imágenes aún se están sirviendo.
¿Me estoy perdiendo de algo?
fuente
Respuestas:
En 3.1 simplemente te deshaces de la parte de 'imágenes' del camino. Entonces, una imagen que vive en
/assets/images/example.png
realidad estará accesible en una solicitud de obtención en esta url:/assets/example.png
Debido a que la
assets/images
carpeta se genera junto con una nueva aplicación 3.1, esta es la convención que probablemente quieran que sigas. Creo que ahí es dondeimage_tag
lo buscaré, pero aún no lo he probado.Además, durante la nota clave de RailsConf, recuerdo que D2h dijo
public folder
que ya no debería tener mucho, principalmente páginas de error y un favicon.fuente
Usted querrá cambiar la extensión de su archivo css de
.css.scss
a.css.scss.erb
y hacer:Es posible que deba realizar una "actualización completa" para ver los cambios. CMD + SHIFT + R en los navegadores OSX.
En producción, asegúrese de
sucede al momento del despliegue.
fuente
.css
a.css.erb
(después de que las haya movidoapp/assets
para obtener el procesamiento erb sin sass.)Para lo que vale, cuando hice esto, descubrí que ninguna carpeta debería incluirse en la ruta en el archivo css. Por ejemplo, si tengo
app/assets/images/example.png
, y pongo esto en mi archivo CSS ...... entonces de alguna manera funciona mágicamente. Me di cuenta de esto mediante la ejecución de la
rake assets:precompile
tarea, que es un asco todo de todas sus rutas de carga y vuelca en una carpeta cajón de basura:public/assets
. Eso es irónico, OMI ...En cualquier caso, esto significa que no necesita poner ninguna ruta de carpeta, todo en sus carpetas de activos terminará viviendo en un directorio enorme. La forma en que este sistema resuelve los conflictos de nombre de archivo no está clara, es posible que deba tener cuidado al respecto.
Es frustrante que no haya mejores documentos disponibles para este gran cambio.
fuente
asset_path()
ayudante y especificando el directorio.En los rieles 4 ahora puede usar una URL de imagen CSS y sass helper:
Si sus imágenes de fondo no aparecen, considere ver cómo las está haciendo referencia en sus hojas de estilo.
fuente
div.logo {background: image-url("logo.png") no-repeat center;}
al hacer referencia a imágenes en CSS o en una etiqueta IMG, use image-name.jpg
mientras que la imagen se encuentra realmente en ./assets/images/image-name.jpg
fuente
background: url('sort_asc_disabled.png')
funciona para el archivo app / assets / images / sort_asc_disabled.png.http://railscasts.com/episodes/279-understanding-the-asset-pipeline
Este railscast (video Tutorial de Rails sobre la canalización de activos) también ayuda mucho a explicar las rutas en la canalización de activos. Lo encontré bastante útil, y en realidad lo vi algunas veces.
La solución que elegí es la de @Lee McAlilly, pero este railscast me ayudó a entender por qué funciona. ¡Espero eso ayude!
fuente
La canalización de activos en rieles ofrece un método para esto exactamente.
Simplemente agregue image_path ('nombre de archivo de imagen') a su archivo css o scss y rails se encarga de todo. Por ejemplo:
.logo{ background:url(image_path('admin/logo.png'));
(tenga en cuenta que funciona igual que en una vista .erb, y no utiliza "/ assets" o "/ assets / images" en la ruta)
Rails también ofrece otros métodos auxiliares, y hay otra respuesta aquí: ¿Cómo uso imágenes de referencia en Sass cuando uso Rails 3.1?
fuente