Lägg till has_many :subcategories i din category-modell.
Sen i dina controllers måste du givetvis populera vissa instansvariabler med data från modellerna.
I viewen något i stil med:
<ul>
<% @categories.each do |category| %>
<li><%= category.name %></li>
<% if (category.subcategories.length > 0) %>
<ul>
<% category.subcategories.each do |subcategory| %>
<li><%= subcategory.name %></li>
<% end %>
</ul>
<% end %>
<% end %>
</ul>
Jag är själv nybörjare på rails så förlita dig inte allt för mycket på ovanstående kod.
Ett annat sätt att lösa kategori/underkategori-biten är att köra det i samma tabell och köra acts_as_tree på din kategorimodell.
andra parametern (0) anger vilket id "root"-kategorin har.
i helpern:
def display_tree_recursive(tree, parent_id)
ret = "\n<ul>"
tree.each do |node|
if node.parent_id == parent_id
ret += "\n\t<li>"
ret += yield link_to node.name, node
ret += display_tree_recursive(tree, node.id) { |n| yield n } unless node.children.empty?
ret += "\t</li>\n"
end
end
ret += "</ul>\n"
end