创建非宁静的rails页面

时间:2011-11-03 08:40:02

标签: ruby-on-rails ruby-on-rails-3 model-view-controller

我刚刚使用php mvc框架转向rails并且已经浏览了指南并吞噬了railscast。

似乎一切都是基于宁静的资源,围绕这些部分创建功能是直观的。

非宁静/非基于模型的部分稍微不那么直观,或者至少似乎没有被文档覆盖。

我的网络应用中有3种类型的用户。当用户登录时,我希望它们显示一个仪表板页面,其中包含一些基本的摘要信息,具体取决于它们的用户类型。

什么是代表这个的最佳方式?我是否只是创建一个名为Dashboard的新动作控制器来表示这种基于非模型的功能,然后创建我需要的方法,如是显示还是有更好的策略?

干杯

2 个答案:

答案 0 :(得分:1)

是的,您可以创建一个新的仪表板控制器。

如果它可能只是show动作,您只需向用户控制器和路线match "/users/:id/dashboard" => "users#dashboard"添加新的仪表板方法。

答案 1 :(得分:1)

如果你可以安心地考虑你的应用程序,Rails会让你的生活变得非常轻松。每当您需要构建新功能时,请考虑用户正在做什么。专注于“名词”。

  • 您是否正在显示可能已过滤或排序的内容列表?的:索引
  • 你是否展示了众多的东西?或者只有一个?的:显示
  • 用户是否需要构建新内容?这并不总是意味着保存到数据库。在:新中显示,并将结果发布到:创建
  • 用户是否在修改东西?输入:更新。在修改之前是否有东西或页面的视图?使用:编辑
  • 是什么东西被删除了?的:删除

如果它让您感到困惑,请不要理解:index :show 之间的区别。将您的功能置于:index 即可开始,您将了解是否需要将其移至:show

还要了解正常RESTful资源和单一资源之间的差异 - 有时候(就像你的仪表板一样),使用resource :dashboard然后将功能放在{{1}中可能更有意义行动。

熟悉http://guides.rubyonrails.org/routing.html,并记住考虑非模型“事物”,即使它们不是模型。

在您的案例中:您有三种类型的用户和一个信息中心。您可以将用户及其角色表示为模型,并将该信息存储在会话中(user_id)。然后,当用户访问:show时,他们会根据用户和角色对象查看自定义视图(在/dashboard中呈现)。