0

我一直在到处寻找并尝试了我能找到的每一个建议,但它仍然不起作用。基本上,我试图将输入的任何内容拆分为单独的单词,然后将每个单词作为链接。我试图从数据库中获取一个值并将其传递给 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。谢谢!

4

2 回答 2

2

这对我来说看起来很奇怪。如果@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 %>";
于 2012-12-04T16:43:16.400 回答
1

我只想结束这个问题,这就是为什么我要回答我自己的问题。Teeg 告诉我使用 Gon,这最终对我有用,但他发表了评论,所以我无法投票作为答案。

于 2012-12-06T16:16:16.717 回答