在RABL模板中显示对象和集合



我使用RABL作为JSON API的基础。我需要在模板中显示一个对象(@user)和一个集合(@posts)。通常,这是没有问题的。@posts是@user的子元素,所以,我只需要这样做:

object @user 
   attributes :id, :name
   child :posts do |post|...

问题是,我通过控制器中的助手方法(by_category)运行@posts,如下所示:

@user = User.find(params[:id])
@posts = @user.posts.by_category(params[:category])

通过仅将帖子作为子节点获取,我不应用helper方法-并且我不能按类别获取帖子。

我想知道如何最好地解决这个问题,如果有一种方法可以在同一个RABL模板中显示对象和集合?

在文档中,您可以像以下示例一样在局部部分中包含局部变量:

你还可以传入其他实例变量,以便在你的模板中使用:

Rabl::Renderer.new('posts/show', @post, :locals => { :custom_title => "Hello world!" })
然后,在你的模板中,你可以使用@custom_title作为:
attribute :content
node(:title) { @custom_title }

这允许您使用如下内容:

控制器:

Rabl::Renderer.new('user/show', @user, :locals => { :posts_category => "examples" })
部分:

attribute id
node(:posts) { |user| user.posts.by_category(@posts_category) } 

相关内容

  • 没有找到相关文章

最新更新