Ruby on rails 覆盖ApplicationHelper?

Ruby on rails 覆盖ApplicationHelper?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我们正在使用的引擎中有一个ApplicationHelper,如下所示: module ApplicationHelper def page_title() # ... end end 这将由引擎中的多个视图调用。我想在应用程序中重写此方法,以提供不同的默认标题。我该怎么做?仅仅定义我自己的ApplicationHelper似乎不起作用。您是否在ApplicationHelper模块中定义了页面标题方法?仅仅拥有一个ApplicationHelper本身是不行的 默认情况下,您

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

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

这将由引擎中的多个视图调用。我想在应用程序中重写此方法,以提供不同的默认标题。我该怎么做?仅仅定义我自己的
ApplicationHelper
似乎不起作用。

您是否在
ApplicationHelper
模块中定义了页面标题方法?仅仅拥有一个ApplicationHelper本身是不行的

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

这种行为源自ruby的开放类结构。可以在任何时间、任何地点重新打开任何类/模块/对象,以向其添加方法和属性。或多或少


您可以发布一些试图用以覆盖引擎方法的代码吗?

您是否在
ApplicationHelper
模块中定义了页面标题方法?仅仅拥有一个ApplicationHelper本身是不行的

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

这种行为源自ruby的开放类结构。可以在任何时间、任何地点重新打开任何类/模块/对象,以向其添加方法和属性。或多或少


您可以发布一些试图用以覆盖引擎方法的代码吗?

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

如果,引擎助手可能在ApplicationHelper之前加载,并且您的方法被覆盖


如果,Rails可能从未加载过您的模块,因为它认为它已经知道ApplicationHelper,并且不再尝试加载它。

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

如果,引擎助手可能在ApplicationHelper之前加载,并且您的方法被覆盖


如果,Rails可能从未加载过您的模块,因为它认为它已经知道ApplicationHelper,并且不再尝试加载它。

您将自己的ApplicationHelper放在哪里了?我的在app/helpers/中。引擎的ApplicationHelper位于vendor/{engine}/app/helpers/中。您将自己的ApplicationHelper放在哪里了?我的位于app/helpers/中。引擎的ApplicationHelper位于vendor/{engine}/app/helpers/中。