2010-12-04 4 views
0

私はちょうどawesome_nested_setを入れて、すべてうまくいきます。私はgithubのリンクに記載されているCategory.rebuild!を使ってacts_as_treeから変換しました。awesome_nested_set親を選択しない方法は?

問題があります。親なしの最上位にノードを作成するオプションはありません(例:フォーム選択に空白がありません。<option>)。これは私が使用していますselect_tagです:

<%= select_tag 'parent_id', options_for_select(nested_set_options(Page) {|i| "#{'..' * i.level} #{i.name}" }) %> 

私はそれは私がトップレベルにページを作成することができるようにする方法がわからないですので、私はRoRの初心者くさいのです。誰かが私を正しい方向に向けることができますか?

答えて

2

ルートレベルでレコードを作成するには、単にparent_idをnilにします。次のオプションを追加する必要があります。

<%= select_tag 'parent_id', options_for_select(
     nested_set_options(Page) {|i| "#{'..' * i.level} #{i.name}" }.unshift(["No Parent", nil]) 
    ) %> 

これはおそらくこれをヘルパーに移動するときです。

+0

ありがとうございました!私はこれをヘルパーにすることに目を向けます。頭を上げてくれてありがとう! – jyoseph

+0

@jyoseph私はそれを考えると、ユーザーが親を割り当てたい場合を除いて、おそらくフィールドを無効にしておく方がよいでしょう。それは少しのJSが必要です。 –

+0

もう一度アダムに感謝します。私がこれを使って遭遇した問題は、既存のレコードを編集するときに状態が保存されない(オリジナルの親が選択されず、 "親なし"オプションが選択されている)場合です。 – jyoseph

1

unshiftの方法でこれを行うのはあまり良い方法ではありません。 :include_blank => trueを代わりに使用してください。

<%= f.select :parent_id, nested_set_options(Page){|i| "#{'-' * i.level} #{i.name}" }, {:include_blank => true}, {:class => "form-control"} %> 
関連する問題