【问题标题】:Creating non-restful rails pages创建 non-restful rails 页面
【发布时间】:2011-12-20 23:31:59
【问题描述】:

我刚刚从使用 php mvc 框架转移到 rails,并且一直在阅读指南和吞噬 railscasts。

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

non-restful/non-model-based 部分不太直观,或者至少似乎没有被文档覆盖。

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

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

干杯

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 制作match "/users/:id/dashboard" => "users#dashboard", :as => :dashboard,您将免费获得dashboard_url url helper!
    【解决方案2】:

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

    • 您是否显示了一个可能已过滤或排序的事物列表? :索引
    • 您展示的是众多事物中的一种吗?还是只有一个? :显示
    • 用户是否需要构建新事物?这并不总是意味着保存到数据库。在 :new 中显示它并将结果发布到 :create
    • 用户是否正在修改某个东西? PUT 到 :更新。在修改之前是否有事物或页面的视图?使用 :edit
    • 是否正在删除某些内容? :删除

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多