我正在使用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模板中显示对象和集合?
答案 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) }