2011-11-03 70 views
0

我刚刚从使用php mvc框架转移到rails,并且已经通过指南和吞噬railscasts。创建非宁静的rails页面

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

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

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

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

干杯

回答

1

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

如果它可能只是显示操作,您可以将新的仪表板方法添加到您的用户控制器和路线match "https://stackoverflow.com/users/:id/dashboard" => "users#dashboard"

+0

使'match/users /:id/dashboard“=>”users#dashboard“,:as =>:dashboard',你会得到一个免费的dashboard_url url帮助器! –

1

如果你能够平静地思考你的应用,Rails会让你的生活变得非常简单。无论何时您需要构建新功能,请考虑用户正在做什么。专注于“名词”。

  • 您是否正在显示可能被过滤或排序的事物列表? :索引
  • 你是不是正在展示一件很多东西?还是只有一个? :显示
  • 用户是否需要建立新事物?这并不总是意味着保存到数据库。将其显示在:新的并将结果发布到:创建
  • 用户是否正在修改某个东西? POD到:更新。在修改之前是否有对事物或页面的看法?使用:编辑
  • 被删除的东西? :删除

如果它混淆了你,不要在的区别包裹起来:指数:显示。将您的功能置于:索引开始,并且您将了解是否需要将其移至:显示

还要了解普通RESTful资源和单一资源之间的区别 - 有时(比如在仪表板的情况下),使用resource :dashboard然后将功能置于:show操作可能更有意义。

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

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