2012-12-03 98 views
0

我一直在尋找無處不在,並嘗試每一個建議,我可以找到這個,但它仍然無法正常工作。基本上,我試圖把所輸入的內容分解成單獨的單詞,然後讓每個單詞成爲一個鏈接。我試圖從數據庫中獲取一個值並將其傳遞給javascript,以便我可以在JavaScript中爲該值賦予一個變量。下面是代碼:從控制器分配一個JavaScript變量的ruby變量

控制器:

def show 
    @icelandic_reader = IcelandicReader.find(params[:id]) 
    @icelandic_reader_json = @icelandic_reader.text.to_json; 

respond_to do |format| 
    format.html # show.html.erb 
    format.json { render json: @icelandic_reader } 
end 
end 

在.js.erb文件:

window.onload = function() { 
    var myText = <%= @icelandic_reader_json %>; 
    console.log("test1"); 
    var words = myText.split(" "); 
    console.log("test2"); 
    var numWords = words.length; 
    var textToInsert; 

    for (var i = 0; i < numWords; i++) { 
     console.log("inside for loop"); 
     textToInsert += "<a href=#>" + words[i] + "</a>" + " "; 
    } 

    document.getElementById('icelandic_reader_text').innerHTML = textToInsert; 

} 

我沒有得到任何錯誤,但我沒有看到任何的我的測試控制檯日誌出現。我已經嘗試了各種方法,我已經找到了如何分配ruby變量,但它不會工作。我有紅寶石3.2.6。謝謝!

+0

在'var numWords = lines.length'你在哪裏設置'lines' – 244an

+0

謝謝,我修正了這個問題,我在發佈前重命名了一些東西,並錯過了它。但是,它並沒有解決問題。我甚至覺得它沒有通過第一行,因爲我從來沒有在控制檯中看到「test1」。 – nielsene54

+1

你必須用'''包圍文本? (如果是文本) – 244an

回答

1

我只是想關閉這個問題,這就是爲什麼我回答我的問題。 Teeg告訴我要使用Gon,這是最終爲我工作的,但他提出了一個評論,所以我不能將它作爲答案投票。

1

這看起來很奇怪。如果@icelandic_reader.text只是一個字符串,爲什麼你打電話給to_json呢?如果它是您從視圖中訪問的@icelandic_reader的屬性,那麼爲什麼您甚至將它分配爲實例變量?爲什麼你甚至需要撥打render json? Rails只會在您的視圖文件夾中尋找show.js.erb

試試這個:

# controller 

def show 
    @icelandic_reader = IcelandicReader.find(params[:id]) 

    respond_to do |format| 
    format.html # show.html.erb 
    format.json 
    end 
end 

而在你js.erb:

# js.erb 

var myText = "<%= @icelandic_reader.text %>";