2010-11-27 41 views
7

Excuses - Je suis un débutant en utilisant Ruby on Rails. Encore un peu confus sur la façon dont cela fonctionne.passer une variable de rails dans une fonction js

En ce moment, à mon avis, sous mon changeurs div, j'ai ce code:

#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 est une variable qui contient toutes les images miniatures que je veux afficher sur la page. En cliquant sur l'un, on rafraîchira un div avec sa grande image.

la fonction correspondante est js:

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

Cela fonctionne si j'écris juste une URL valide. Mais passer le param "id" dans la fonction js ne fonctionne pas. Je suis à perte ... qu'est-ce qui me manque?

Comment puis-je transmettre cette variable rails - img --- dans mon js? C'est juste coincé dans cette boucle.

Toute aide serait vraiment appréciée.

Répondre

6

Essayez ceci:

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

La construction #{...} exécute le code de rubis dans les accolades et remplace la construction entière du résultat. Peut être utilisé partout où vous voulez remplacer une partie d'une chaîne avec du contenu provenant d'une variable ou d'une méthode ruby.

+0

whew! Je vous remercie! – mtay

+0

Merci votre réponse m'aide. mais vous pouvez également utiliser '<%= ... %>' à la place '# {...}'. – SSR

0

En utilisant

= image_tag img.image.url (: miniature),: class => 'bouton',: onclick => "replaceImg ('# {} img.id');"

peut être une solution, ou de vérifier le code source généré

+0

merci! mais la clé était de le faire sans les guillemets simples. – mtay

+0

tout va bien, mais assurez-vous que votre paramètre est entier, car il peut provoquer une erreur de variable indéfinie. – Nucc