Jbuilder のフラグメントキャッシュで、配列で書きたい場合とハッシュで書きたい場合のキャッシュを共通化したい
結論
views/book/_book.jbuilder
json.cache! book do
_j = book.to_builder.target!
JSON.parse(_j).each do |k,v|
json.set! k, v
end
end
controller で @tmpl[:book] が set されていると仮定
views/book/show.jbuilder
json.book do
json.partial! 'book/book', book: @tmpl[:book]
end
controller で @tmpl[:books] が set されていると仮定
views/book/list.jbuilder
json.books @tmpl[:books], partial:'book/book', as: :book
背景
単体表示に
{
book: {
bookId: "moge"
}
}
複数表示に
{
books:[
{
bookId: "moge"
},
{
bookId: "moge2"
}
]
}
としたいみたいなやつがググっても全然出てこなかったので。
所感
まぁこうは普通しないわなぁ。