2010-11-27 78 views
0

当用户登录到一个网站,它有特定的页面(例如,对于他的东西仪表盘),究竟应该如何映射?地图仪表板的URL

有网站有example.com/user/,和其他人只有example.com/,其他examples.com/user/id

什么是做到这一点的最好方法是什么?如果你没有在URL中传递:id,你怎么知道这个用户是谁?

回答

1

在您使用的仪表盘的地址中 - 这其实并不重要。重要的是你选择了一些在你的网站环境中一致和合乎逻辑的东西。例如,如果您的网站更多是一个应用程序 - la basecamp - 并且仪表板是用户开始与应用程序进行交互的主页面,那么您可能需要遵循example.com/的某些内容,或者example.com/home甚至example.com/dashboard

如果,另一方面,你正在建设的东西沿着一个电子商务网站的线,并通过仪表盘页面更你的意思是链接到一个屏幕订单历史,配置文件的详细信息等,你可能需要更多的东西像xxx.com/myaccount

就像我说的,重要的是,它是有意义的在您的网站的其他部分

在知道哪些用户是哪个,不管羯羊的ID是在URL中的细节取决于你如何在你的应用程序处理身份验证的条款。如果你还没有设置任何东西,我强烈建议看看Devise。它将完成您需要的所有功能,以便在rails 3中快速轻松地进行身份验证。它也适用于CanCan,这对确定哪些人可以在您的应用中执行哪些操作很有帮助

+0

感谢。我现在有/ users /:id但我想将它映射到/ myaccount。我如何做到这一点,并改变我拥有的所有其他链接?/users /:id/services /:id等到/ myaccount/services /? – donald 2010-11-27 15:10:18

0

我认为如果你不使用资源路由你的应用程序,那么你可以使用你最喜欢的东西,REST风格的方式是.com/users/:id/dashboard

1

这取决于仪表板是是否单身资源。我可能会创建为单资源如

的config/routes.rb中

match '/dashboard' => 'users#dashboard', :as => 'dashboard' 

耙路线

dashboard  /dashboard(.:format)    {:action=>"dashboard", :controller=>"users"} 

在控制器,我有一个#current_user功能根据会话信息返回当前登录的用户。这样,仪表板返回的CURRENT_USER只有信息,但在我的例子中,用户不能访问其他用户,这通常是这种情况的仪表盘(尽管一些管理功能,呼吁这样的能力。)

+0

是否需要向控制器添加任何内容?只有那条路线似乎不起作用。你能举一个完整的例子吗?这正是我想要的。谢谢 – donald 2010-11-27 23:43:04