Я хочу переопределить вспомогательный метод с моим плагином. Я пытался создать новый вспомогательный модуль с методом, который должен переопределить так:Как добавить/переопределить метод для помощника
myplugin/app/helpers/issues_helper.rb
module IssuesHelper
def render_custom_fields_rows(issus)
'it works!'.html_safe
end
end
Но это не работает. Основной метод все еще используется в соответствующем представлении.
Hack Решение:
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