我一直在寻找各处,并尝试了我能找到的所有建议,但它仍然没有用。基本上我试图接受输入的内容,将其拆分为单独的单词,然后将每个单词作为链接。我试图从数据库中取一个值并将其传递给javascript,以便我可以在javascript中有一个变量是该值。这是代码:
在控制器中:
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 :(得分: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 %>";
答案 1 :(得分:1)
我只想关闭这个问题,这就是我回答自己问题的原因。 Teeg告诉我使用Gon,这最终为我工作,但他提出了一个评论,因此我无法将其作为答案投票。