我正在尝试构建的 JSON 非常简单——它是类别到属于每个类别的可用产品的映射。它应该看起来像:
{
category_permalink : [<product 1>, <product 2>],
another_category : [<another product>, <yet another>]
}
并且 Category has_many Products 所以可以在控制器中获取,例如
Category.where(:permalink => params[:selected_categories]).includes :products
但是,RABL 似乎真的想把所有东西都包装在一个数组中。我尝试了许多不同的变化,包括像
collection @categories
node do |cat|
{ cat.permalink => partial('products/product', :object => cat.products) }
end
这很接近,但将整个结果包装在一个数组中,并为每个类别提供了 N 个单元素数组。
我想要这个 JSON 的原因是它可以很好地与拉这个查询的前端应用程序一起工作。其他任何事情都意味着 JS 级别的一些丑陋的黑客攻击。
我知道我也不必为此使用 RABL,但它是这个应用程序的一种标准,我想看看它是否可以工作。