2010-11-27 12 views
7

謝罪 - 私はRuby on Railsを使っている初心者です。それがどのように動作するかについてはまだ少し混乱しています。js関数にrails変数を渡す

#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は、私がページに表示したいすべてのサムネイル画像を保持する変数です:

は今のところ、私の見解では、私のスクロールdivの下、私はこのコードを持っています。 1つをクリックすると、他の場所のdivを自分の大きな画像で更新します。

対応するJS関数は次のとおりです。

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

私は有効なURLで書く場合、これは動作します。しかし、js関数にparam "id"を渡しても機能しません。私は迷っています...私は何が欠けていますか?

このレール変数 - img ---を私のjsに渡すにはどうしたらいいですか?それはちょうどそのループに立ち往生しています。

本当にありがとうございます。

答えて

6

これを試してみてください:

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

#{...}構築物は、中括弧内のRubyコードを実行し、その結果に構築物全体を置き換えます。 Rubyの変数やメソッドの一部の文字列で文字列の一部を置換したい場所であれば、どこでも使用できます。 (:サムネイル):クラス=> 'ボタン':

= IMAGE_TAG img.image.url使用

+0

よろしくお願いします。ありがとうございました! – mtay

+0

お返事ありがとうございました。 '#{...}'の代わりに '<%= ... %>'を使用することもできます。 – SSR

0

のonClick => "replaceImg( '#{img.idを}');"

は解決策になる可能性があります。または生成されたコードを確認してください。

+0

ありがとう!しかし、鍵はシングルクォートなしでそれを行うことでした。 – mtay

+0

これは問題ありませんが、未定義の変数エラーが発生する可能性があるため、パラメータが整数であることを確認してください。 – Nucc