2009-05-08 2 views
0

Попытка использовать this method (суть которого заключается в использовании self.method_name в FunnyHelper, а затем вызвать его как FunnyHelper.method_name в представлении).Rails, используя именованные маршруты в помощнике (но с методами класса)

Однако это вызывает, по крайней мере несколько проблем - методы, такие как вид h() и именованные маршруты ломаются (они хорошо с помощью метода модуля def method_name, но не в каком-либо методе класса def self.method_name).

Очевидно, я могу избежать этого, сбросив def self.method_name до def method_name; кто-нибудь с любыми предложениями о том, как я могу получить торт и съесть его?

ответ

1

Если вы действительно хочешь сделать это, вы можете использовать

include ActionController::UrlWriter 

, чтобы получить доступ к вашим именованным маршрутам и

# h is a private method 
ActionController::Base.helpers.send :h, "<" 

для других зрения помощников. Но я бы не рекомендовал его. На мой взгляд, шаблон дизайна, который думает, что здесь отстой, и я просто использую помощник: блоги, несмотря на их жалобу, что они не явны. Это правда, вроде ... но Rails в целом и эта часть Rails, в частности, архивируются полностью «неявным» способом, поэтому попытка борьбы с этим будет больше проблем, чем это стоит, так как вы открытие.