我认为当我使用rabl返回标准RESTful控制器方法的JSON时,我有一个非常基本的情况......
首先让我说我与父母和孩子有一个典型的一对多关系(假设客户和账户):
class Customer < ActiveRecord::Base
has_many :accounts
end
在我的客户控制器中,我有索引和编辑 - 索引,我只想返回所有客户(没有帐户),并编辑我想要返回特定客户的所有帐户。对于索引,我不希望以明显的性能(N + 1)原因返回帐户。
在我的兔子中,我有以下内容:
#index.rabl (for listing all customers)
collection :@customers
extends "customers/_customer"
和
#edit.rabl (for editing a single customer)
object :@customer
extends "customer/_customer"
我正在重复使用_customer.rabl进行索引和编辑。
#_customer.rabl
object :@customer
attributes :name, ......
if @include_accounts
child :accounts do
extends "accounts/_account"
end
end
我在编辑(控制器)中设置@include_accounts而不是索引 - 但这不起作用 - 实际上这里的实例var(@include_accounts)永远不会传递下来。实现这个的正确模式是什么?
答案 0 :(得分:3)
尽管rails-rabl gem声称速度更快,但我发现模板对于条件表达式并不灵活 - 请参阅rabl-rails自述文件:实例变量。