我正在构建一个 CMS 作为 gem 的子集,所有这些都继承自 Base gem。每个 gem 提供不同的功能,即博客、页面、事件等。我想设置我的 Base gem,以便它可以根据已安装的 gem 动态构建导航。我不想通过查找所有控制器/路由来自动执行此操作,我宁愿让每个 gem 将导航项标识为哈希数组,即:
# In my Admin controller (from which all other gem controllers inherit)
@admin_navigation = [{controller: "users", label: "Users", sort_order: 10}, {controller: "settings", label: "Settings", sort_order: 11}]
# In my Pages gem
@admin_navigation += [{controller: "pages", label: "Pages", sort_order: 3}, {controller: "page_templates", label: "Pagetemplates", sort_order: 8}]
# In my blog gem
@admin_navigation += [{controller: "posts", label: "Blog", sort_order: 4}, {controller: "tags", label: "Tags", sort_order: 5}]
基本上我希望我的@admin_navigation 变量包含来自每个继承的控制器的所有导航项。控制器有没有办法从每个继承的控制器调用方法?
有没有更好的方法来实现这一点?最后,我只需要这些导航项哈希的数组来构建我的菜单。提前致谢!