2012-04-21 20 views
9

He estado buscando y buscando esta respuesta. Pero parece que no puedo hacer que esto funcione, hace varias horas. Por favor por favor ayudamecómo recuperar imágenes de la carpeta assets/images en una aplicación de rieles

Soy una página web de mi aplicación rieles, que estoy tratando de mostrar una imagen guardada en mi carpeta de activos @app/assets/images/rails.png.

Tengo un archivo JavaScript con la siguiente función que construye html. Dentro de esta función, me gustaría pasar el enlace a la imagen. Este es el código que tengo actualmente.

function addToInfoWindow(infoWindowContent) 
{ 

infoWindowString = '<div class="infoWindow">'+ 
**'<img src="/assets/images/rails.png" />'+** 
'<p>'+infoWindowContent+'</p>'+ 
'<p><a href="http://www.google.com">See here</a></p>'+ 
'<p><a href="http://www.google.com">Upload a photo</a></p>'+ 
'</div>'; 
infoWindow.setContent(infoWindowString); 

} 

Como puede ver arriba en el código, la parte en negrita es el problema. He intentado varias combinaciones diferentes de cadenas url para acceder a ese archivo de imagen, pero la imagen no aparece en el elemento html.

Miré y miré, intenté las funciones de carriles auxiliares como image_url('rails.png'). Pero debo ponerlos en el lugar equivocado. ¿Puede alguien por favor ayudarme? Por favor, muéstreme dónde, qué función del código anterior debo agregar para buscar la imagen al /assets/images/rails.png para que su URL se coloque en la parte resaltada arriba y se muestre en mi vista.

Respuesta

23

Si desea utilizar los carriles auxiliares es necesario "actualización "tus archivos javascript a erb.

Simplemente cámbieles el nombre de whatever.js a whatever.js.erb. Ahora los rieles ejecutarán todo el código erb (cosas entre <% = y%>) antes de entregar el archivo.

Así que usted puede hacer como esto:

<img src="<%= asset_path('rails.png') %>" /> 

More information, véase 2.2.3.

+1

Eso funcionó. Guau. Pasé 4 horas probando todo tipo de cosas y todo fue porque el archivo no tenía extensión. Muchas gracias por tu ayuda – banditKing

+1

Siempre es así: P Me alegro de poder ayudarte. – klump

+1

Tenga en cuenta que si usa coffeescript, la extensión para usar erb es '.js.coffee' no' .js.cofee.erb'. el erb es automático. Lo sé, es raro así. Pero así es como funciona. Este poco de información debería salvar a la gente un tiempo. – ahnbizcad

3

Usted no será capaz de utilizar los carriles auxiliares como image_tag en javascript puro - añada .erb y utilizar asset_path (véase la respuesta de klump)

Cuestiones relacionadas