在Rails中映射仪表板URL

时间:2010-11-27 14:40:07

标签: ruby-on-rails ruby ruby-on-rails-3

当用户登录网站并且有特定页面(例如他的东西的仪表板)时,应该如何映射?

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

最好的方法是什么?如果你没有在URL中传递:id,你怎么知道它是哪个用户?

3 个答案:

答案 0 :(得分:1)

就您用于仪表板的地址而言,这并不重要。重要的是,您在网站的上下文中选择一致且符合逻辑的内容。

例如,如果您的网站更像是一个应用程序 - 一个基本营 - 并且仪表板是用户开始与应用程序交互的主页面,那么您可能需要类似于example.com/的内容,或者example.com/home甚至是example.com/dashboard

另一方面,如果您在电子商务网站和仪表板页面上构建更多内容,则表示屏幕上包含订单历史记录,个人资料详细信息等,您可能需要更像xxx的内容的.com /我的帐户

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

就知道哪个用户是哪个用户而言,无论ID是否在网址中,详细信息取决于您在应用中如何处理身份验证。如果您还没有设置任何内容,我强烈建议您查看Devise。它将完成您在rails 3中快速轻松地启用和运行身份验证所需的一切。它也适用于CanCan,这有助于确定谁可以在您的应用程序中执行哪些操作

答案 1 :(得分:1)

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

<强>配置/ routes.rb中

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

佣金路线

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

在控制器中,我有一个#current_user函数,它根据会话信息返回当前登录的用户。这样,仪表板仅返回current_user的信息,但在我的示例中,用户永远不能访问另一个用户的仪表板,这通常是这种情况(尽管某些管理员功能需要这样的能力。)

答案 2 :(得分:0)

我认为REST的方式是.com/users/:id/dashboard如果您不使用资源来路由您的应用,那么您可以使用您最喜欢的。