我刚刚使用php mvc框架转向rails并且已经浏览了指南并吞噬了railscast。
似乎一切都是基于宁静的资源,围绕这些部分创建功能是直观的。
非宁静/非基于模型的部分稍微不那么直观,或者至少似乎没有被文档覆盖。
我的网络应用中有3种类型的用户。当用户登录时,我希望它们显示一个仪表板页面,其中包含一些基本的摘要信息,具体取决于它们的用户类型。
什么是代表这个的最佳方式?我是否只是创建一个名为Dashboard的新动作控制器来表示这种基于非模型的功能,然后创建我需要的方法,如是显示还是有更好的策略?
干杯
答案 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
中呈现)。