私はacts_as_treeを使用するCategoryモデルを持っています
class Category < ActiveRecord::Base
acts_as_tree :order=>"name"
end
カテゴリツリーを表示するときは再帰を使用しますが、(一部のチェックボックスがオンになっているかどうかを除いて)毎回ほぼ同じ部分が生成されるため、多数のデータベース呼び出しが必要になります。
これをキャッシュしたいのですが、現時点で考えられるのは、Category.allを新しい非ActiveRecordデータ構造にダンプして、呼び出しの数を減らすことだけです。もっと良い方法はありますか?
index.html.erb
<%= render :partial=> "/categories/category_checkboxes", :locals=>{:select_categories=>@categories_ids} %>
_category_checkboxes.html.erb
<% @categories.each do |category| %>
<h3><a href="#"><%=category.name%></a></h3>
<div>
<% category_children = category.children %>
<%= render :partial => "/categories/category_checkbox_children",
:locals => { :child_categories => category_children,
:chk_class=>chk_class,
:select_categories=>select_categories } unless category_children.empty? %>
</div>
<% end %>
_category_checkboxes_children.html.erb
<ul>
<% child_categories.each do |category| %>
<li class= "category_check_box">
<%=check_box_tag("category#{category.id}", 1, select_categories.index(category.id)%>
<%=label_tag("category#{category.id}" ,"#{category.name}")%>
<%= render :partial => "/categories/category_checkbox_children", :locals => {
:child_categories => category.children,
:select_categories=>select_categories} unless category_children.empty? %>
<% end %>
</li>
</ul>