Rails 3 で awesome_nested_set を使用して、階層的なカテゴリ システムを作成しました。ビューにカテゴリ セレクターを表示するために、次のコードを使用しました。
<%= form.select :parent_id, options_for_select(nested_set_options(Category, @category) {|i| "#{'-' * i.level} #{i.name}" }.unshift(["No Parent", nil]), @category.parent_id) %>
カテゴリをレベルごとにアルファベット順に並べようとしています。nested_set_options(Category, @category)
をこれに変更するとnested_set_options(Category.order("name"), @category)
、カテゴリ リスト全体が名前順に並べ替えられます。私がやりたいのは、各ノードの子を名前のアルファベット順に並べ替えることです。
たとえば、結果の選択メニューを次のように並べたいとします。
Animal
- Bird
-- Chicken
-- Hawk
- Fish
-- Cod
-- Goldfish
-- Trout
- Mammal
-- Cat
-- Primate
--- Chimpanzee
--- Human
-- Zebra
Plant
- Tree