我有一个故事模型和一个帖子模型。每个故事都有很多帖子。
在我的 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'
我相信我收到此错误是因为我没有设置 show.json.rabl 视图使用的 @story 实例变量。但我不确定如何解决这个问题并将 show.json.rabl 传递给正确的故事对象。
任何帮助将不胜感激!