У меня есть модель истории и модель поста. В каждой истории много постов.
В моем действии story#index я хотел бы использовать 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
Это отлично работает в действии stories#show. Но когда я пытаюсь расширить его с помощью действия stories#index
#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 правильный объект истории.
Любая помощь будет принята с благодарностью!