0

別のモデル「WindowItems」とhas_manyの関係を持つモデル「Window」があります。WindowItemsには自己参照関係があります(したがって、WindowItemsはそれ自体のネストされた子を持つことができます)。

次のようなウィンドウのactiveadminリソースがあります。

show :title => :name do

attributes_table do
  row :name
  row :column_position
  row :window_type
  row :column_count
  row :active
  row :page_position
  row :collapsible
  row :icon_id
  row :created_at
  row :updated_at
end

div :class => "accordion" do
  if window.window_items.count > 0
    panel "Window Items (#{window.window_items.count})" do

      table_for window.window_items do
        column "Name" do |a|
          link_to a.name, admin_window_item_path(a.id)
        end
        column :active
        column :link
        column :icon
        column :window
      end
    end
  end
end # end accordion

終わり

したがって、現在、これはすべてのウィンドウアイテムを表示していますが、代わりに、親ウィンドウアイテムのみを表示したいと思います(子ウィンドウアイテムはオフのままにします)。

パネルの「ウィンドウアイテムが行う」ブロックに表示されるレコードをフィルタリングするにはどうすればよいですか?

ありがとう

4

2 に答える 2

0

WindowItemモデルにparent_idを追加すれば、問題はかなり簡単に解決できると思います。ネストされたすべての子には、親を参照するparent_idがあり、最上位のアイテムにはparent_idがありません。

于 2013-02-22T06:43:06.413 に答える
0

私はついにそれを理解しました。モデルにスコープを追加し、そのスコープを参照しました。

範囲:

scope :is_parent, where('parent_window_item_id IS NULL || parent_window_item_id = ""')

およびactiveadminリソース内:

table_for window.window_items.is_parent do
....
end
于 2013-02-25T22:15:05.443 に答える