如何在rails中动态创建named_route?

问题描述:

我现在有这在我的ApplicationController如何在rails中动态创建named_route?

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

我用它重定向等,但我也想用它在视图(的link_to的等)。在控制器和视图之间共享代码以保持它即使干扰MVC也是合理的吗?

是的,我会说这是一个合法的重用。 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