2009-06-03 85 views
3

我有单表继承适用于我的应用程序。我有两个用户子类型(运动员和公司),继承超级用户。单表继承路由?

比方说,我列出所有用户,并希望链接到此列表中的每个用户的个人资料。如果类型是运动员,并且公司控制者是类型是公司,我想链接到运动员控制器。有没有标准的Rails方式呢?也许有些路由技巧?

回答

2

你甚至可以做到这一点更简单,Rails的认可它具有处理,所以让我们说,你有实例变量@user至极可以是一个运动员或者一个公司哪种类型的用户,您可以这么做

= link_to "Profile", @user 

BAM!铁轨神奇!

+0

我是否必须以特殊方式设置我的路线才能做到这一点?我收到一个错误:未定义的方法'user_path'。我可以拨打其他链接吗? – Sam 2009-06-03 15:21:26

+0

你必须为每个资源添加map.resources。我有曾经的公司和人,这两者都是联系人,所以我在我的routes.rb:map.resources人 map.resources公司 map.resources联系人 这应该做的伎俩! – 2009-06-03 17:10:30

+0

虽然我有这个问题,但我不想使用map.resource设置的正常show /:id方案。相反,我想要像'home /:permalink'这样的东西。我正在使用'map.connect'运动员/:action /:permalink',:controller =>'athletes',:action =>'home'' – Sam 2009-06-04 00:43:41

-3
<% User.find(:all).each do |user| %> 
    <%= link_to "user", eval("#{user.type.underscore}_path(user)") %> 
<% end %> 

这将根据用户类型(存储在类型字段中)生成路径。不要忘记将用户类型添加到您的路由配置中。

我希望这会有所帮助。

问候

+0

不要认为从视图访问模型是一个好主意...... – 2011-05-18 10:03:37

+0

使用这样的eval通常不是一个好主意。 – 2013-04-03 13:02:56