我编写了一些自定义代码,可以对ActionView :: Helpers :: AssetTagHelper中的一些方法进行更改 一个例子:
module ActionView
module Helpers
module AssetTagHelper
alias old_existing_method existing_method
def existing_method
puts "Does foobar"
return old_existing_method
end
end
end
end
现在通常我会将此代码保存在RAILS_ROOT / config / initializers / asset_helper_overrides.rb中 这可以按预期工作。
现在我想把它变成一个插件。
我将此文件复制到插件位置,我将在init.rb文件中要求它。 但是,这似乎不起作用。 我不确定为什么这不起作用。
我猜它可能是因为在需要ActionView :: Helpers之前需要该文件。不确定。
有人可以帮助我吗?谢谢。
答案 0 :(得分:0)
我建议为此创建一个模块,并将您的模块包含在帮助程序中。这是一个例子:
module AssetTagExtensions
def self.included(base)
base.alias_method_chain :existing_method, :added_cleverness
end
def existing_method_with_added_cleverness
puts "Does foobar"
existing_method_without_added_cleverness
end
end
然后,在init.rb文件中,您应该执行以下操作:
ActionView::Helpers::AssetTagHelper.module_eval do
include AssetTagExtensions
end
在ActionView::Helpers::AssetTagHelper
类上调用module_eval(或send)非常重要,而不是重新打开它,以确保不会阻止它正确加载。