我想用我的插件覆蓋輔助方法。我試圖創建一個新的幫手模塊,其方法應該像這樣覆蓋:如何向幫手添加/覆蓋方法
myplugin/app/helpers/issues_helper.rb
module IssuesHelper
def render_custom_fields_rows(issus)
'it works!'.html_safe
end
end
但是這不起作用。核心方法仍然適用於適當的觀點。
哈克解決方案:
issues_helper_patch.rb
module IssuesHelperPatch
def self.included(receiver)
receiver.send :include, InstanceMethods
receiver.class_eval do
def render_custom_fields_rows(issue)
"It works".html_safe
end
end
end
end
init.rb
Rails.configuration.to_prepare do
require 'issues_helper_patch'
IssuesHelper.send :include, IssuesHelperPatch
end
這是因爲黑客在正常的方式方法應該是InstanceMethods
模塊IssuesHelperPatch
模塊。
'return'是隱含的,如果你的價值是最後一行。包括它往往表明它出於某種原因並可能導致混淆。 – tadman
你確定這是正在執行的方法嗎?當你說「不起作用」時,你並不具體。 – tadman
@tadman我剛剛刪除了很多代碼,以使示例更小,因此您的建議無關緊要。謝謝。 – freemanoid