Rails использует именованные маршруты в помощнике (но с методами класса)

StackOverflow https://stackoverflow.com/questions/840825

  •  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; Таким образом, попытка бороться с этим вызовет больше хлопот, чем стоит, как вы обнаруживаете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top