0

我正在构建一个 rails3 应用程序,目前我的 routes.rb 文件中有以下行:

get "/:id" => 'tapes#show'

换句话说,您可以使用和显示磁带 (我也在使用friendly_id gem,因此用户实际上看到的是一个友好的 URL 形式)website.com/tapes/1using website.com/1website.com/tapename

现在,我想要实现的是对用户页面做同样的事情。因此,与其显示用户页面,website.com/users/alex我还希望能够使用website.com/alex.

有没有办法在 routes.rb 中实现这个“用户”逻辑以及现有的“磁带”规则并以某种方式设置优先级?因此,如果有人访问website.com/alex我的应用程序,将搜索是否有 ID 为“alex”的用户记录,如果没有找到,则查找 ID 为“alex”的磁带

我可以在路线中使用某种高级约束吗?有任何想法吗?

非常感谢您的帮助,

亚历克斯

4

1 回答 1

1

Rails 无法确定您尝试访问的控制器。唯一可行的方法是:

  1. 您可以根据名称上的一些正则表达式来确定它将解析为哪个模型。或者

  2. 您知道用户名和磁带名从不冲突,并且愿意承担访问数据库以解析正确控制器的成本。

出于多种原因,这可能是一个坏主意,它会影响性能,也不符合RESTful原则,并且可能会让用户感到困惑。

于 2012-04-05T13:50:22.047 回答