【发布时间】:2016-05-14 11:25:22
【问题描述】:
好的,这是我的问题:
我有一个HomeController,其中包含一个操作,比如index,它将为我的网站呈现一个登录页面。该站点还有许多其他控制器,用于实现各种其他功能的操作。
我想在我的主页上有一个动态导航栏,我正在寻找的是 HomeController#index 转到我的应用程序中的每个其他控制器并调用一个特定的方法,该方法将返回并带有链接详细信息的对象,例如, HomeController#index 将转到 ContactController 并调用 get_link 方法,该方法将返回如下内容:
{label: "Contact", url: "/contact"}
类似地,HomeController#index 会尝试在每个其他控制器上调用get_link,直到它收集到链接对象的Array,然后可以将其传递给视图以呈现导航。
我尝试通过模块中的元编程并使用 included 钩子方法(从Sitepoint tutorial 获取我的引用)来做到这一点。但这没有用。然后我在某处读到我可能必须使用 ActiveSupport::Concern 来实现这种功能,但我不知道该怎么做。我曾在 PHP CMS 上工作过,例如 Drupal 和 WordPress,他们使用钩子实现了这一点,这或多或少是我在这里寻找的。有什么想法吗?
【问题讨论】:
标签: ruby-on-rails plugins hook metaprogramming activesupport