рендеринг частичного, поскольку json возвращает синтаксические ошибки при переносе строк - PullRequest
0 голосов
/ 04 апреля 2011

У меня есть объект json, который создается из результатов нескольких запросов к базе данных.

Я пытаюсь переместить json в партиал, чтобы я мог использовать один и тот же формат json из нескольких методов (индекс, поиск).

У меня были результаты в _listResults.js.erb, и теперь я переместил их в results.json.erb, а в _listResults.js.erb у меня есть

[
<% @results.each_with_index do |result, idx| %>
<%= render 'results.json.erb', result => result %>
<% end %>
]

мой частичный выглядит так

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

из-за разрывов строк я получаю сообщение об ошибке

... syntax error, unexpected ',', expecting keyword_end...);@output_buffer.safe_concat(',"title":');@output_buffer.a...

Хотя я мог бы поместить весь вывод json в одну строку, и похоже, что это решило бы проблему, это было бы очень трудно сохранить, если я захочу изменить вывод в более позднее время.

Какой лучший способ справиться с подобными вещами.

Я нахожусь на Windows, если это имеет значение (надеюсь, это не будет).

Спасибо

Ответы [ 3 ]

0 голосов
/ 04 апреля 2011

Проблема была не в json, а в том, как работает синтаксический анализатор ruby, в этом случае необходимо использовать запятую в одной строке.

[0,
 2
] parses

[0
,2] doesn't

измените свой эрб на

{
  "result": <%= result.id %>,
  "title": "<%= result.title %>"
}
0 голосов
/ 04 апреля 2011

В исходном файле erb есть синтаксическая ошибка, result => result должно быть :result => result.

[
<% @results.each_with_index do |result, idx| %>
<%= render 'results.json.erb', :result => result %>
<% end %>
]
0 голосов
/ 04 апреля 2011

А как насчет:

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

К вашему сведению, http://www.jsonlint.com/ - это отличный сайт, где вы можете проверить, действительно ли ваш JSON действителен.

...