Макеты Rails JSON API с Jbuilder (или другим)

В моем приложении 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 в кошмар, особенно при попытке управлять корнями объектов и т. д. ).

9
задан MikeL 17 July 2012 в 06:06
поделиться