2

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

这是我的.rabl:

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

希望 .json 看起来像这样:

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

但它也呈现空值:

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

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

4

2 回答 2

3

假设您期望products实例变量上的方法:

child(@catalogue.products.select{|p| p.store_id == @store.id} => :products ) do
  attribute :id
end
于 2013-08-13T15:55:42.397 回答
0

嗯。你可以这样做。

[{},{a: "b"},{}].reject {|h| h.blank?}
于 2013-08-13T15:28:48.463 回答