gpt4 book ai didi

ruby-on-rails - 装饰 Rails 引擎的助手以包含来自主应用程序的关注

转载 作者:太空宇宙 更新时间:2023-11-03 16:40:42 25 4
gpt4 key购买 nike

我想通过装饰引擎的辅助模块之一,在引擎中包含来自应用程序的 ActiveSupport::Concern。这是来自引擎的助手:

module MyEngine
module MyHelper
end
end

这是来自主应用程序的问题:

module MyConcern
extend ActiveSupport::Concern

def do_this
end

def do_that
end
end

下面是需要包含关注点(用于引擎 View )的装饰引擎助手 - 它在主应用中声明,使用 Rails guides 中描述的装饰器模式:

module MyEngine
module MyHelper
include MyConcern

def do_stuff
end
end
end

引擎正确加载装饰助手,但引擎 View 只能调用“do_stuff”。 MyConcern 中的方法不可用,我很难弄清楚原因。我还尝试通过将它嵌入到 MyEngine::MyHelper.module_eval 调用中来解决这个问题,但这也没有用。

有没有人遇到过这种问题?我是不是理解错了?

最佳答案

我将 MyHelper 从模块替换为类

module MyConcern
extend ActiveSupport::Concern

def do_this
"do this"
end

def do_that
"do that"
end
end

module MyEngine
class MyHelper
include ::MyConcern

def do_stuff
"do stuff"
end
end
end

调用时:

MyEngine::MyHelper.new.do_stuff
MyEngine::MyHelper.new.do_this
MyEngine::MyHelper.new.do_that

结果将是:

do stuff

do this

do that

关于ruby-on-rails - 装饰 Rails 引擎的助手以包含来自主应用程序的关注,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54112020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com