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/中。