ActiveAdmin嵌套资源索引视图

时间:2014-05-21 01:32:50

标签: ruby-on-rails activeadmin nested-resources

我使用belongs_to

将MenuItem嵌套在Menu下

如果我没有声明索引块(活动管理员自动执行它),这很有效但是如果我声明我自己的块,它会显示所有菜单的所有MenuItem。

如何告诉我的块尊重嵌套资源?

更新 - 我认为这与https://github.com/nebirhos/activeadmin-sortable-tree而不是activeadmin核心有关。

所以我想问题就变成了: 是否可以使用嵌套资源的可排序树?

ActiveAdmin.register MenuItem do
    config.filters = false
    config.paginate = false
    belongs_to :menu
    sortable tree: true
    permit_params :title, :url, :menu_id

    index as: :sortable do
        label "Title" do |menu_item|
            link_to menu_item.title, edit_admin_menu_menu_item_path( menu_item.menu, menu_item )
        end
        actions defaults: false do |menu_item|
            link_to "Delete", admin_menu_menu_item_path( menu_item.menu, menu_item ), method: "delete", confirm: "Are you sure?"
        end
    end

    form do |f|
        f.inputs "Details" do
            f.input :title
            f.input :url
            f.input :menu_id, :as => :hidden
        end

        f.actions
    end

end

1 个答案:

答案 0 :(得分:1)

问题是由于ActiveAdmin可排序树在层次结构中查找根的方法。默认情况下,无论嵌套如何,可排序树都会查找指定模型的所有根。可以通过向proc选项提供:roots_collection来自定义此行为:

ActiveAdmin.register MenuItem do
  belongs_to :menu
  sortable tree: true,
          # Only display the parent menu's roots
          roots_collection: proc { parent.menu_items.roots }
end

ActiveAdmin Sortable Tree #30上的帖子中复制的答案。

相关问题