2010-11-27 139 views
7

道歉 - 我是一個使用Ruby on Rails的新手。對它的工作原理還有點困惑。將一個rails變量傳遞給一個js函數

現在,在我看來,在我的卷軸格,我有這樣的代碼:

#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是保存我想在頁面上顯示的所有縮略圖的變量。點擊其中一個將以其自己的大影像刷新別處。

對應的js函數是:

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

這工作,如果我只是在一個有效的URL寫。但將參數「id」傳入js函數不起作用。我很茫然......我錯過了什麼?

如何將這個rails變量 - img ---傳遞給我的js?它只是停留在那個循環中。

任何幫助將非常感激。

回答

6

嘗試這種情況:

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

#{...}構建執行大括號內的紅寶石代碼和替換,其結果,整個構建體。可以用於任何你想用ruby變量或方法的某些內容替換部分字符串的地方。

+0

嗖!謝謝! – mtay 2010-11-27 19:30:10

+0

謝謝你的回答幫助我。但您也可以使用'<%= ... %>'這個代替'#{...}'。 – SSR 2014-08-13 05:49:19

0

使用

= IMAGE_TAG img.image.url(:縮略圖),:類=> '按鈕',:的onClick => 「replaceImg( '#{img.id}');」

可以是解決方案,或者檢查生成的源代碼

相關問題