2012-12-03 95 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 %>";