Rails路由问题:直接在Root下映射Slugs / Permalinks?

大家早上好!..

一般路由问题在这里…我正在努力为我的应用程序中的用户实现类似于此的路由。

http://www.example.com/ 用户名

然后映射到usersControllers#show,因此我的路由文件中有以下内容。

map.connect’/:permalink’,: controllers =>“users”,:action =>“show”

然后我得到了show动作,通过参数中的永久链接找到用户。 所以它的作品却……

我遇到的问题是所有其他UNDEFINED路由都被发送到userController #show。 即404和其他未命名的路线。 所以我不认为我会采用正确的惯例。 我的解决方案是在这之上添加其他命名路由,这解决了问题,但对我来说似乎很脆弱。 我在想这个错吗?

什么是更好的解决方案? 我打算谷歌寻求答案,但我只是想把它扔掉讨论。 想法?

你做得对。 Rails路由从顶部的高优先级到底部的低优先级。 您的用户显示操作应该在底部。 只要确保永久链接与用户不对应,就会生成正确的404。

如果您的用户名与您网站上的其他url相同,该怎么办? 这似乎是一个等待发生的麻烦。

只需将其更改为http://www.example.com/user/username即可

这样,您可以为所有基于用户名的URL创建“用户”命名空间。