我们正在使用的引擎中有ApplicationHelper
,如下所示:
module ApplicationHelper
def page_title()
# ...
end
end
这会被引擎中的许多视图调用。我想在我的应用程序中覆盖此方法以提供不同的默认标题。我该怎么做呢?简单地定义我自己的ApplicationHelper
似乎不起作用。
答案 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并且不会尝试再次加载它。