在rabl中我试图让一个孩子的元素是有条件的,但是在条件评估为false的情况下,它仍然呈现没有属性的元素。
这是我的.rabl:
child(:products) do
attribute :id, :if => lambda{ |p| p.store_id == @store.id }
end
希望.json看起来像这样:
"products":[{"id":2}]
但它也呈现空值:
"products":[{}, {"id":2}, {}]
有没有办法让它完全忽略空元素?
答案 0 :(得分:3)
假设您期望在实例变量上使用products
方法:
child(@catalogue.products.select{|p| p.store_id == @store.id} => :products ) do
attribute :id
end
答案 1 :(得分:0)
Hmmmm。你可以这样做。
[{},{a: "b"},{}].reject {|h| h.blank?}