我目前在我的ApplicationController
中有这个def account_path
eval "#{current_user.type.downcase}_account_path"
end
我将它用于重定向等。但我也想在视图中使用它(对于link_to等)。这是一个合法的案例,在控制器和视图之间共享代码,即使它打破了MVC,也要保持DRY?
答案 0 :(得分:2)
是的,我会说这是合法的重复使用。 helper_method
来电是有原因的:
helper_method :account_path
也可以将此功能提供给您的观点。
如果您不想使用eval
,可以这样做:
def account_path
self.send("#{current_user.type.downcase}_account_path")
end
因为_path
方法被解释为控制器上的方法。