Rails不能以json格式输出数据

Rails won't output data in json

本文关键字:输出 数据 格式 json 不能 Rails      更新时间:2023-09-26

这简直要把我逼疯了

我需要链接的格式为

links = [{source: 1, target: 2}, {..}, ...]
控制器代码:

  @edges = []
     Follow.where("followable_type= 'User'").map do |x|
      @edges << {source: x.follower_id, target: x.followable_id}
     end

查看代码(javascript内部):

var links = [(<%= @edges.to_json %>)];

在HTML源码中的输出是

var links = [([{&quot;source&quot;:2,&quot;target&quot;:3},{&quot;source&quot;:2,&quot;target&quot;:1},{&quot;source&quot;:8,&quot;target&quot;:1},{&quot;source&quot;:1,&quot;target&quot;:8},{&quot;source&quot;:17,&quot;target&quot;:13},{&quot;source&quot;:8,&quot;target&quot;:13},{&quot;source&quot;:8,&quot;target&quot;:3},{&quot;source&quot;:13,&quot;target&quot;:3},{&quot;source&quot;:3,&quot;target&quot;:2},{&quot;source&quot;:39,&quot;target&quot;:13},{&quot;source&quot;:3,&quot;target&quot;:39},{&quot;source&quot;:15,&quot;target&quot;:1},{&quot;source&quot;:1,&quot;target&quot;:15},{&quot;source&quot;:3,&quot;target&quot;:1},{&quot;source&quot;:3,&quot;target&quot;:8},{&quot;source&quot;:3,&quot;target&quot;:13},{&quot;source&quot;:21,&quot;target&quot;:3},{&quot;source&quot;:13,&quot;target&quot;:21},{&quot;source&quot;:13,&quot;target&quot;:39},{&quot;source&quot;:21,&quot;target&quot;:13},{&quot;source&quot;:21,&quot;target&quot;:27},{&quot;source&quot;:27,&quot;target&quot;:13},{&quot;source&quot;:1,&quot;target&quot;:3},{&quot;source&quot;:1,&quot;target&quot;:39},{&quot;source&quot;:1,&quot;target&quot;:2},{&quot;source&quot;:1,&quot;target&quot;:13},{&quot;source&quot;:1,&quot;target&quot;:21},{&quot;source&quot;:1,&quot;target&quot;:27}])];

所以我想我应该把html_safe放在那里。这就得到

var links = [([{"source":2,"target":3},{"source":2,"target":1},{"source":8,"target":1},{"source":1,"target":8},{"source":17,"target":13},{"source":8,"target":13},{"source":8,"target":3},{"source":13,"target":3},{"source":3,"target":2},{"source":39,"target":13},{"source":3,"target":39},{"source":15,"target":1},{"source":1,"target":15},{"source":3,"target":1},{"source":3,"target":8},{"source":3,"target":13},{"source":21,"target":3},{"source":13,"target":21},{"source":13,"target":39},{"source":21,"target":13},{"source":21,"target":27},{"source":27,"target":13},{"source":1,"target":3},{"source":1,"target":39},{"source":1,"target":2},{"source":1,"target":13},{"source":1,"target":21},{"source":1,"target":27}])];

更好,但是每个键都是字符串。而且不能是string

我怎样才能使它工作?问题出在控制器还是视图?

JSON中没有符号的概念(和Ruby一样)。键必须是JSON格式的字符串。在你的情况下,你似乎不需要钥匙。你可以只使用follower id和followable id的数组。