如何在rails中动态创建named_route?

时间:2010-08-23 06:28:49

标签: ruby-on-rails model-view-controller

我目前在我的ApplicationController

中有这个
def account_path
  eval "#{current_user.type.downcase}_account_path"
end

我将它用于重定向等。但我也想在视图中使用它(对于link_to等)。这是一个合法的案例,在控制器和视图之间共享代码,即使它打破了MVC,也要保持DRY?

1 个答案:

答案 0 :(得分:2)

是的,我会说这是合法的重复使用。 helper_method来电是有原因的:

helper_method :account_path

也可以将此功能提供给您的观点。

如果您不想使用eval,可以这样做:

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

因为_path方法被解释为控制器上的方法。