0

我有一个 json 对象,它是根据多个数据库查询的结果创建的。

我正在尝试将 json 移动到部分中,以便可以从多种方法(索引、搜索)中使用相同的 json 格式。

我的结果在 _listResults.js.erb 中,现在已将它们移到 results.json.erb 和 _listResults.js.erb 中

[
<% @results.each_with_index 做 |result, idx| %>
<%= 渲染 'results.json.erb', 结果 => 结果 %>
<% 结束 %>
]

我的部分看起来像这样

{"结果":<%= result.id %>
,"title":"<%= result.title %>
......

由于换行符,我收到一条错误消息

...语法错误,意外',',期待keyword_end...);@output_buffer.safe_concat(',"title":');@output_buffer.a...

虽然我可以将整个 json 输出放在一行中,而且看起来这样可以解决问题,但如果我以后想更改输出,那维护起来真的很痛苦。

处理这种事情的最佳方法是什么。

如果这很重要,我在 Windows 上(希望它不会)。

谢谢

4

3 回答 3

0

问题不在于 json,而在于 ruby​​ 解析器的工作方式,在这种情况下,它需要在同一行上有逗号。

[0,
 2
] parses

[0
,2] doesn't

将您的 erb 更改为

{
  "result": <%= result.id %>,
  "title": "<%= result.title %>"
}
于 2011-04-04T19:16:56.210 回答
0

关于什么:

{"result":<%= result.id %>,
 "title":"<%= result.title %>"
 ...

仅供参考,http://www.jsonlint.com/是一个很棒的网站,您可以在其中检查您的 json 是否有效。

于 2011-04-04T19:05:44.333 回答
0

您的原始 erb 文件中有语法错误,result => result应该是:result => result.

[
<% @results.each_with_index do |result, idx| %>
<%= render 'results.json.erb', :result => result %>
<% end %>
]
于 2011-04-04T19:33:55.957 回答