删除Rabl中的空哈希

时间:2013-08-13 15:19:13

标签: ruby-on-rails ruby rabl

在rabl中我试图让一个孩子的元素是有条件的,但是在条件评估为false的情况下,它仍然呈现没有属性的元素。

这是我的.rabl:

child(:products) do
  attribute :id, :if => lambda{ |p| p.store_id == @store.id }
end

希望.json看起来像这样:

"products":[{"id":2}]

但它也呈现空值:

"products":[{}, {"id":2}, {}]

有没有办法让它完全忽略空元素?

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