2011-09-11 9 views
25

En los archivos CSS, se puede obtener el nombre propio de un elemento de imagen (con la huella digital) mediante el uso de:URL de las imágenes en código JavaScript utilizando Rails 3.1 asset Pipeline?

background-image: url(image-url("rails.png")) 

pero ¿cómo hacer lo mismo a partir de un archivo JavaScript?

+0

¿Puedes dar un ejemplo de uso de esto en CSS y HTML? – kzh

+2

@kzh, ya lo hice. – Pablo

+2

debe usar 'background-image: image-url (" rails.png ")'. sin embargo, no es relevante para esta pregunta ... – raven

Respuesta

48

Veo que está utilizando el método de ayuda sass.

En CSS estándar (no Sass) se hace algo como esto:

.class { background-image: url(<%= asset_path 'image.png' %>) }

El archivo CSS tendrá que tener erb añadido a las extensiones:

file_name.css.erb

JavaScript se aplican las mismas reglas:

file_name.js.erb

y en el archivo:

var image_path = '<%= asset_path 'image.png' %>'

Los rieles asset pipeline guide es una excelente fuente de información sobre cómo utilizar estas características.

+6

La respuesta, en resumen, es usar erb. – Pablo

2

En los carriles 4, en lugar de utilizar una vista js.erb recomiendo que usted se pega a la tubería de activos, y pasa la URL a ella con una variable en lugar de utilizar gon o alguna otra técnica discutida en: Ruby on Rails - Send JavaScript variable from controller to external Javascript asset file

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/activos/javascript/file.js.coffee:

alert gon.path 

Este método es más rápido porque el archivo se precompila una sola vez en el arranque, consigue servido por el servidor en lugar de a través de los carriles, y en el misma solicitud HTTP que el resto de las Js.

Cuestiones relacionadas