создание простой карты пар ключ/значение из результата AR с помощью RABL

JSON, который я пытаюсь построить, довольно прост — это карта категорий с доступными продуктами, принадлежащими каждой категории. Это должно выглядеть примерно так:

{
   category_permalink : [<product 1>, <product 2>],
   another_category   : [<another product>, <yet another>]
}

И категория 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 для этого, но это своего рода стандарт для этого приложения, и я хотел бы посмотреть, сможет ли он работать.


person sbeam    schedule 18.02.2013    source источник


Ответы (1)


Классический случай, когда дергают за волосы, а затем решают через 10 минут после того, как задают вопрос вслух. Думаю, я забыл, что все еще использую рубин...

@categories.each do |cat|
   node(cat.permalink) do
      partial('products/product', :object => cat.products.active)
   end
end
person sbeam    schedule 18.02.2013