2010-12-21 11 views
4

awesome_nested_setを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 

答えて

2

私はawesome_nested_setに不慣れだが、あなたはRailsの3で二回

Category.order(:level).order(:name) 

これを順番に呼び出すことができますそれぞれのレベルでカテゴリーを注文し、次に各レベル内で名前で注文する必要があります。また、これをモデル内のデフォルトスコープにスローすることもできます。

class Category < ActiveRecord::Base 
    default_scope order('level, name') 
    ... 
end 

注文はデフォルト値に影響しないため、デフォルトの有効範囲には最適です。このstackoverflowの記事で示唆されているようにあなたが@item.children.except(:order).order("your_sort_column")を使用することができます

+0

この記事以来、私たちは、データ操作を扱う際に、デフォルトのスコープに順序を使用する際の難しさを実現しています。 – efoo

関連する問題