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

时间:2009-06-26 14:29:55

标签: ruby-on-rails routing permalinks

早上好人!..

General Routing Quesiton Here ...我正在努力为我的应用程序中的用户实现类似于此的路由。

  

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

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

  

map.connect'/:permalink',: controllers => “users”,:action => “显示”

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

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

什么是更好的解决方案?我会去谷歌搜索答案,但我只是想把它扔掉讨论。想法?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

即可

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