2011-09-11 8 views
25

Nel file CSS, è possibile ottenere il nome proprio di una risorsa immagine (con l'impronta digitale) utilizzando:URL di immagini nel codice JavaScript utilizzando la pipeline di asset Rails 3.1?

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

ma come si fa a fare la stessa cosa da un file JavaScript?

+0

Puoi fare un esempio di questo utilizzo in CSS e HTML? – kzh

+2

@kzh, l'ho già fatto. – Pablo

+2

dovresti usare 'background-image: image-url (" rails.png ")'. non pertinente a questa domanda però ... – raven

risposta

48

Vedo che stai usando il metodo dell'assistente sass.

In CSS standard (non Sass) si fa qualcosa di simile:

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

Il file CSS avrà bisogno di avere Erb aggiunto le estensioni:

file_name.css.erb

Per javascript si applicano le stesse regole:

file_name.js.erb

e nel file:

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

The Rails asset pipeline guide è un'ottima fonte di informazioni su come utilizzare queste funzioni.

+6

La risposta, in breve, è l'uso di erb. – Pablo

2

In Rails 4, invece di utilizzare una vista js.erb vi consiglio che si tiene fede alla pipeline di asset, e passare l'URL ad esso con una variabile utilizzando invece gon o qualche altra tecnica discusso: Ruby on Rails - Send JavaScript variable from controller to external Javascript asset file

Con gon :

app/views/layout/application.html.erb:

<head> 
    <meta charset="utf-8"/> 
    <%= include_gon %> 

app/controllers/application_controller.rb:

before_filter { gon.path = asset_path 'image.png' } 

app/beni/javascript/file.js.coffee:

alert gon.path 

Questo metodo è più veloce perché il file è precompilata solo una volta in fase di avvio, viene servito dal server invece che attraverso Rails, e sulla stessa richiesta HTTP come il resto del Js.

Problemi correlati