我正在构建一个rails3应用程序,目前我的routes.rb文件中有以下行:
get "/:id" => 'tapes#show'
换句话说,您可以使用website.com/tapes/1
和using website.com/1
显示磁带
(我也在使用friendly_id gem,因此用户实际上看到website.com/tapename
)形式的友好URL
现在,我想要实现的是为用户页面做同样的事情。因此,我希望能够使用website.com/users/alex
而不是显示使用website.com/alex
的用户页面。
有没有办法实现这个'用户' routes.rb 中的逻辑与现有的“磁带”规则一起以某种方式设置优先级?
因此,如果有人访问website.com/alex
,我的应用会搜索是否存在带有ID' alex'的用户记录。如果没有找到,那么找一个带有id' alex'的磁带。
我可以在路线中使用某种高级约束吗? 有什么想法吗?
非常感谢你的帮助,
亚历
答案 0 :(得分:1)
Rails无法确定您尝试访问的控制器。唯一可行的方法是:
您可以根据名称上的某个正则表达式确定要解析的模型。 或
您知道用户名和磁带名称从不冲突,并且愿意承担命中数据库以解决正确控制器的成本。
由于多种原因,这可能是一个坏主意,它会产生性能影响,也不符合RESTful
原则,并且可能会让用户感到困惑。