我想使用rails熟悉的助手,但功能略有改变.我看待它的方式,我希望能够做到这样的事情:
module AwesomeHelper
#... create alias of stylesheet_link_tag to old_stylesheet_link_tag
def stylesheet_link_tag(*args)
if @be_awesome
awesome_stylesheet_link_tag *args
else
old_stylesheet_link_tag *args
end
end
end
Run Code Online (Sandbox Code Playgroud)
我看到它的方式,我有三个选择:
所以这里的问题是,我是否坚持使用其中一种次优解决方案,还是有其他方式我没有考虑过?如果我选择选项3,有没有办法在不直接寻址rails helper模块的情况下执行此操作?
(注意:我删除了上下文,因为它没有添加任何问题.)
我想创建一个钩子方法,每次调用类的任何函数时都会调用它.我已经尝试过method_added,但它只在类定义时执行一次,
class Base
def self.method_added(name)
p "#{name.to_s.capitalize} Method's been called!!"
end
def a
p "a called."
end
def b
p "b called."
end
end
t1 = Base.new
t1.a
t1.b
t1.a
t1.b
Output:
"A Method's been called!!"
"B Method's been called!!"
"a called."
"b called."
"a called."
"b called."
Run Code Online (Sandbox Code Playgroud)
但我的要求是在程序中的任何地方调用的类的任何函数都会触发"method_called",钩子方法.
Expected Output:
"A Method's been called!!"
"a called."
"B Method's been called!!"
"b called."
"A Method's been called!!"
"a called."
"B Method's been called!!"
"b called."
Run Code Online (Sandbox Code Playgroud)
如果有任何已定义的现有钩子方法可以正常工作,那么请告诉它.
提前致谢..