2013-02-22 4 views
0

У меня есть модель «Окно» с has_many отношением к другой модели «WindowItems». 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

жаль, что я не был более ясно по этому вопросу, я на самом деле есть родительский идентификатор. Я пытаюсь показать дочерним элементам этой панели (что было бы, как вы сказали, с пустым parent_id). Я просто не знаю, как фильтровать записи, показанные на activeadmin table_for thanks! – Sean

Смежные вопросы