В моем приложении rails 3.2 я использую jbuilder для рендеринга ответов из моего JSON API.
Я хочу предоставить общую структуру для всех ответов API, и макет был бы вероятным решением, чтобы сохранить мои представления СУХИМИ.
ex :Я бы хотел, чтобы каждый ответ имел следующую форму:
{
status: "ok|error|redirect",
data: {... JSON specific to the current view... },
errors: [... ],
notes: [... ]
}
(где значение для данных — это структура json, предоставляемая представлением, все остальное — из макета)
Однако :я не могу заставить макет jbuilder корректно отображать вид.
# in layout
json.data yield
# in view
json.some "value"
результаты в:
{"data":"{\"some\":\"value\"}"} # arg! my json has become a string
Попробуйте по-другому:
# in layout
yield
# in view
json.data do |json|
json.some "value"
end
результаты в:
{}
Кто-нибудь добился успеха в этом с помощью jbuilder или другого драгоценного камня/метода шаблонов json?
Эта проблема juilder github предполагает, что это возможно, но указывает на то, что у других возникают аналогичные проблемы.
Я вижу рабль(https://github.com/nesquena/rabl/)предполагается поддержка макетов(https://github.com/nesquena/rabl/wiki/Using-Layouts), но я решил не использовать его по другим причинам (rabl превращает сложные структуры json в кошмар, особенно при попытке управлять корнями объектов и т. д. ).