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

时间:2014-03-10 17:39:08

标签: ruby-on-rails ruby-on-rails-3 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])

通过仅将帖子作为子节点提取,我不应用帮助方法 - 我无法获取帖子by_category。

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

1 个答案:

答案 0 :(得分:1)

the documentation开始,你可以在局部像中包含本地人,如下例所示:

您还可以传入要在模板中使用的其他实例变量:

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) }