覆盖ApplicationHelper?

时间:2009-06-16 15:04:03

标签: ruby-on-rails ruby

我们正在使用的引擎中有ApplicationHelper,如下所示:

module ApplicationHelper
  def page_title()
    # ...
  end
end

这会被引擎中的许多视图调用。我想在我的应用程序中覆盖此方法以提供不同的默认标题。我该怎么做呢?简单地定义我自己的ApplicationHelper似乎不起作用。

2 个答案:

答案 0 :(得分:2)

您是否在ApplicationHelper模块中定义了page_title方法?仅仅拥有一个ApplicationHelper就不会这样做。

默认情况下,您的ApplicationHelper模块应该已在app/helpers/application_helper.rb。在需要您使用的插件后,rails需要您的应用程序文件。这意味着您在app / helpers / application_helper.rb中定义的任何方法都应该覆盖插件代码中定义的方法。

这种行为源于ruby的开放类结构。任何时候,任何类/模块/对象都可以重新打开,以便为其添加方法和属性。或多或少。

你能发布一些你试图用?

覆盖引擎方法的代码

答案 1 :(得分:1)

您的ApplicationHelper中定义的其他方法是否可用?

如果,可能会在ApplicationHelper之前加载引擎帮助程序,并覆盖您的方法。

如果没有,Rails可能永远不会加载您的模块,因为它认为它已经知道ApplicationHelper并且不会尝试再次加载它。