Вы должны переместить ваш вспомогательный метод в отдельный модуль, а затем включить модуль в контроллер и почтовую программу, используя метод add_template_helper
. Тогда вспомогательные методы будут доступны в представлениях контроллера и почтовой программы.
module SomeHelper
def some_shared_method
# ...
end
end
class SomeController
add_template_helper SomeHelper
end
class SomeMailer
add_template_helper SomeHelper
end
Примечание: Если вы поместите код в вспомогательный модуль (в каталоге app/helpers
), вам не нужно будет включать модуль в контроллер, так как методы вспомогательных модулей доступны в представлениях контроллера: дефолт. Однако вам все равно придется включить модуль в почтовую программу, чтобы сделать метод доступным в представлениях почтовой программы.
Если вам также необходимо вызвать вспомогательный метод в контроллере, вы можете сделать это с помощью метода helpers
, который дает вам доступ к вспомогательным методам.
class SomeController
add_template_helper SomeHelper
def some_method
# ...
# calling a helper method in controller
helpers.some_shared_method
# ...
end
end
Или вы можете включить модуль в контроллер, используя метод include
, чтобы методы были доступны непосредственно в контроллере.
class SomeController
include SomeHelper
def some_method
# ...
# calling the included method
some_shared_method
# ...
end
end