2010-08-23 71 views
1

我現在有這在我的ApplicationController如何在rails中動態創建named_route?

def account_path 
    eval "#{current_user.type.downcase}_account_path" 
end 

我用它重定向等,但我也想用它在視圖(的link_to的等)。在控制器和視圖之間共享代碼以保持它即使干擾MVC也是合理的嗎?

回答

2

是的,我會說這是一個合法的重用。 helper_method電話是有這個原因,所以:

helper_method :account_path 

也將使您的意見也可用。

如果你不喜歡使用eval你可以這樣做:

def account_path 
    self.send("#{current_user.type.downcase}_account_path") 
end 

_path方法被解釋爲控制器上的方法。

+0

是的 - 好主意。使用.send也可能更安全一些。 – 2010-08-23 18:30:18