2013-02-22 105 views
0

我有一个与另一个模型“WindowItems”具有has_many关系的模型“Window”。 WindowItems有一个自引用关系(所以它可以有自己的嵌套子代)。Activeadmin has_many

我有一个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 

所以现在,这是显示所有窗口中的项目,而是我只会喜欢它显示父窗口项目(将子窗口项目关闭)。

如何过滤面板上显示的记录“窗口项目”块?

感谢

回答

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 
0

我想,如果你添加一个PARENT_ID您WindowItem模型您的问题将很容易解决。所有嵌套的孩子都会有parent_id指向他们的父母,其中您的顶级项目将没有parent_id。

+0

对不起,我不是这方面的更多清晰的,其实我有一个父ID。我试图向这个面板的孩子们展示(这将会像你所建议的,那些空的parent_id)。我只是不知道如何筛选activeadmin表中显示的记录,谢谢! – Sean 2013-02-23 19:30:00