Rails использует именованные маршруты в помощнике (но с методами класса)
-
20-08-2019 - |
Вопрос
Попытка использовать этот метод (суть которого используйте self.method_name
в FunnyHelper
, затем назовите его как FunnyHelper.method_name
в представлении).
Однако это вызывает по крайней мере пару проблем - методы просмотра, такие как h()
и именованные маршруты, ломаются (они подходят для метода модуля def method_name
, но не для метода класса def self.method_name
) .
Очевидно, я могу избежать этого, опустив <=> обратно на <=>; Кто-нибудь с предложениями, как я могу взять свой пирог и съесть его тоже?
Решение
Если вы действительно хотите это сделать, вы можете использовать
include ActionController::UrlWriter
чтобы получить доступ к вашим именованным маршрутам и
# h is a private method
ActionController::Base.helpers.send :h, "<"
для других помощников просмотра. Но я бы не рекомендовал это. По моему мнению, шаблон дизайна, который здесь предлагается, - отстой, и я бы просто использовал helper: блоги, несмотря на их жалобы на то, что он не явный. Это действительно так ... но Rails в целом и эта часть Rails в частности спроектированы полностью & Quot; неявным & Quot; Таким образом, попытка бороться с этим вызовет больше хлопот, чем стоит, как вы обнаруживаете.