私はスカイイーグルスネストセット宝石hereを使用しています。ネストセットレールアプリ、ヘルパーメソッドが私に必要なものを返さない
深度を2つにすることのみを許可していますが、深度をチェックする前にフィルタを保存していますが、ビューで制限することはできないようですそれを選択するオプション。私はここに示すように、ビューヘルパーを使用しています。
アプリ/ビュー/ _form.html.erb
<%= form_for(@category) do |f| %>
<p>
<%= f.label(:name) %>
<%= f.text_field :name %>
</p>
<p>
<%= f.label(:parent_id) %>
<%= f.select :parent_id, nested_set_options(Category.roots.to_a, @category) {|i, level| "#{'-' * level} #{i.name}" } %>
</p>
<p>
<%= f.submit("Submit") %>
</p>
<% end %>
私が主に興味がある行は、今のところそれは常に、ネストされたセットのすべてのレベルを返しますこれは
<%= f.select :parent_id, nested_set_options(Category.roots.to_a, @category) {|i, level| "#{'-' * level} #{i.name}" } %>
されていますが、私は2つの深さしか許さないので、ルートノードを表示させたい。私はここで立ち往生しています。コードhereを見ると、ルートを含めるオプションしか表示されないため、これは本当です。私はラインに
<%= f.select :parent_id, nested_set_options(Category.roots.to_a, @category) {|i, level| "#{'-' * level} #{i.name}" if i.level < 1} %>
をこれを実行しようとしている。しかし、このすべてはありませんが、2少ないしレベルを持っているオプションアウト空白になって、私はそれが実際にそれらすべてを返さないする必要があります。
nested_set_optionsに深みのあるカテゴリではなく、ルートのみを返すにはどうすればよいですか?事前に感謝します
そうです、私は自分自身を考えていたはずです。私は明らかにnested_setに関心を持ち、明らかな解決策を見ていませんでした。本当にありがとう – ruevaughn