2010-11-27 10 views
7

Disculpas: soy un novato con Ruby on Rails. Todavía un poco confundido acerca de cómo funciona.pasando una variable de carriles a una función js

En este momento, en mi opinión, bajo mi div desplazador, tengo este código:

#scroller 
[email protected]_images.each do |img| 
    .thumbnail_wrapper 
    .thumbnail_image 
     =image_tag img.image.url(:thumbnail), :class => 'button' , :onClick => "replaceImg(img.id);" 

@other_images es una variable que contiene todas las imágenes en miniatura que desea mostrar en la página. Al hacer clic en uno se actualizará un div en otro lugar con su propia imagen grande.

la función js correspondiente es:

:javascript 
function replaceImg(id){ 
    var url = '/images/refresh/' + id; 
    new Ajax.Updater('content_image', url); 
} 

Esto funciona si sólo escribo en una URL válida. Pero pasar el parámetro "id" en la función js no funciona. Estoy perdido ... ¿Qué me estoy perdiendo?

¿Cómo paso esta variable de rieles - img --- en mi js? Simplemente está atrapado en ese bucle.

Cualquier ayuda sería muy apreciada.

Respuesta

6

Prueba esto:

img.image.url(:thumbnail), :class => 'button' , :onClick => "replaceImg(#{img.id});" 

La construcción #{...} ejecuta el código ruby ​​dentro de los corchetes y sustituye toda la estructura con el resultado. Puede usarse en cualquier lugar donde desee reemplazar parte de una cadena con algún contenido de una variable o método de ruby.

+0

¡oh! ¡gracias! – mtay

+0

Gracias tu respuesta me ayuda. pero también puede usar '<%= ... %>' esto en vez '# {...}'. – SSR

0

Usando

= image_tag img.image.url (: miniatura),: class = 'botón'>,: onclick => "replaceImg ('# {img.id}');"

puede ser una solución, o verifique el código fuente generado

+0

¡gracias! pero la clave era hacerlo sin las '' comillas simples. – mtay

+0

está bien, pero asegúrese de que su parámetro sea entero, porque puede causar un error variable indefinido. – Nucc

Cuestiones relacionadas