У меня есть модель сюжета и модель публикации. В каждой истории много сообщений.Возврат только первого дочернего элемента в дочернем узле
В моей статье # index action Я хотел бы использовать rabl для возврата всех @stories, и каждая история в @stories также должна включать дочерний узел, содержащий атрибуты из его последнего созданного сообщения.
Вот ближе всего, что я пришел к достижению того, что я ищу:
#show.json.rabl
object @story
attributes :id, :title, :username
child @story.posts.first => :latest_post do
attributes :id, :story_id, :contents, :username
end
Это прекрасно работает в истории # шоу действий. Но когда я пытаюсь расширить его с действием истории # указательного
#index.json.rabl
collection @stories
extends "stories/show"
я получаю следующее сообщение об ошибке:
ActionView::Template::Error (undefined method `posts' for nil:NilClass):
1: collection @stories
2:
3: extends "stories/show"
app/views/stories/show.json.rabl:8:in `render'
Я считаю, что я получаю эту ошибку, потому что я не устанавливая @story экземпляра переменная, используемая представлением show.json.rabl. Но я не уверен, как обойти это и передать show.json.rabl правильный объект истории.
Любая помощь была бы принята с благодарностью!