首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ruby on Rails项目中的用户名urls,如Twitter、FriendFeed、Facebook等

Ruby on Rails项目中的用户名urls,如Twitter、FriendFeed、Facebook等
EN

Stack Overflow用户
提问于 2009-10-31 19:03:16
回答 2查看 1.1K关注 0票数 2

我正在考虑为一个新项目定义Restful urls (使用Ruby On Rails开发)。我喜欢像"twitter.com/username“这样最著名的web2.0服务的简单和干净的urls。不谈路由配置中的问题(我想用没有使用脏的"map.connect“覆盖的资源来做这件事),真正的问题是:如何保留您想要用于页面的单词(例如: website.com/help、website.com/api等)?我不想考虑时间0的所有可能性(也是因为这是非常不可能的)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-10-31 19:08:41

好吧,如果您想要安全起见-考虑为所有自定义内容添加一个前缀(map.with_options :prefix => 'do/'),这样您的所有控制器/操作都将以如下形式作为前缀

代码语言:javascript
运行
复制
http://example.com/do/:controller/:action/:whatever

因此,您只需阻止do作为用户名,就可以自由地在该前缀之后执行任何您喜欢的操作。

票数 1
EN

Stack Overflow用户

发布于 2009-10-31 19:39:25

路由根据它们被声明的时刻来确定优先级。第一个匹配的声明路由将是已执行的路由。

所以,如果你有:

代码语言:javascript
运行
复制
map.resources :users
map.profile ':nickname', :controller => 'users', :action => 'show'

如果您转到/users,您将使用map.resources :users路由,因为它是第一个匹配的路由。

当您转到/zetarun时,您将被路由到map.profile ':nickname', :controller => 'users', :action => 'show',因为这是第一个匹配的路由。

然后,对于用户配置文件,您可以执行以下操作:

在所有控制器的路由中定义所有资源。

在资源的末尾,添加用户配置文件资源。

因此,当前缀被控制器使用时,它首先被任何存在的路由路由。

并且仅为用户简档保留未路由的url。

别忘了在用户注册中添加一个“保留昵称”验证,以避免有人使用一个不会给他提供个人资料的昵称,因为这个url上还有其他东西。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1654065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档