¿URL de las imágenes en el código JavaScript utilizando el canal de activos Rails 3.1?
image asset-pipeline (2)
En los archivos CSS, puede obtener el nombre correcto de un activo de imagen (con la huella digital) utilizando:
background-image: url(image-url("rails.png"))
¿Pero cómo haces lo mismo desde un archivo JavaScript?
En Rails 4, en lugar de usar una vista js.erb
, te recomiendo que te js.erb
en el js.erb
activos y le pases la URL con una variable en lugar de gon o alguna otra técnica discutida en: Ruby on Rails - Enviar una variable de JavaScript desde el controlador al archivo de recursos de Javascript externo
Con gon
:
app / views / layouts / application.html.erb:
<head>
<meta charset="utf-8"/>
<%= include_gon %>
app / controllers / application_controller.rb:
before_filter { gon.path = asset_path ''image.png'' }
app / asset / javascripts / file.js.coffee:
alert gon.path
Este método es más rápido porque el archivo se precompila solo una vez en el inicio, recibe el servicio del servidor en lugar de hacerlo a través de Rails y en la misma solicitud HTTP que el resto de los Js.
Veo que estás usando el método de ayuda sass.
En CSS estándar (no Sass) haces algo como esto:
.class { background-image: url(<%= asset_path ''image.png'' %>) }
El archivo CSS deberá tener erb agregado a las extensiones:
file_name.css.erb
Para javascript se aplican las mismas reglas:
file_name.js.erb
y en el archivo:
var image_path = ''<%= asset_path ''image.png'' %>''
La guía de canalización de activos de Rails es una excelente fuente de información sobre cómo usar estas funciones.