【问题标题】:Difficulty Grasping Controllers Using Rails使用 Rails 难以掌握控制器
【发布时间】:2011-12-29 22:24:11
【问题描述】:

我正在尝试为我的艺术品建立一个在线展示/商店,但我在开始时遇到了一些麻烦。在朋友的一些建议下,我决定使用 Rails。

我的一个问题是关于控制器的。每个页面都需要一个控制器吗?

到目前为止,我计划在我的 HTML 中包含主页、联系方式、产品和关于我们的页面。这需要我有四个不同的控制器吗?

如果您有任何意见,请告诉我,并提前致谢。

【问题讨论】:

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


    【解决方案1】:

    了解控制器在 RESTful Rails 风格的 MVC 中的作用。虽然 REST 并不适用于所有事物,但它会让您了解(至少在 Rails 中)控制器应该做什么。

    【讨论】:

      【解决方案2】:

      理想情况下,控制器代表 Web 应用程序中的资源(REST 设计)。产品本身就是一个控制器,具有新建、编辑等操作。

      现在,您可以创建一个控制器来处理家庭、联系人和关于我们的信息,但我投反对票。我个人肯定会为每个控制器使用不同的控制器。

      我更喜欢让所有东西尽可能地隔离,只是为了让我的代码对扩展更开放,对更改更封闭(开放/封闭设计原则)。

      【讨论】:

        【解决方案3】:

        您的控制器需要基于局部,而不是基于页面。正如@topek 提到的,静态页面可以进入页面控制器。处理 Product 类管理的页面可以进入 Products 控制器。

        真的,这不是 Rails 问题。这是一个 MVC 问题。

        http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

        【讨论】:

          【解决方案4】:

          不,对于这种情况,您可以使用 PagesController 进行各种操作 - 家庭、联系方式、关于我们。

          对于产品,这听起来像是一个单独的控制器,至少有一个索引和显示操作。

          对于您的 static 页面,您可以为没有页面前缀的干净 url 创建命名路由,如下所示:

          match 'about-us' => 'pages#about_us', :as => :about_us
          

          然后你可以在你的视图中使用about_us_pathabout_us_url

          【讨论】:

          • 这看起来很公平。但是,如果在每个静态页面上,我都包含一个动态功能,例如带有特色产品的侧边栏?那么 MVC 将如何发挥作用呢?
          • 并没有真正改变实现上的任何东西。您将在模型中拥有动态代码,提供控制器并显示部分。
          • @TopChef 您可以通过部分将其放入您的视图中,然后您需要将您拥有的任何变量放入控制器中。根据您的操作方式,它可以是产品控制器或应用程序控制器。你看过 MH 的 rails 教程吗?完成一两次,它肯定会让你理解所有这些 MVC 的东西。
          • 控制器仍然会向模型(产品)询问对象并将它们传递给视图,您可能会在视图中呈现部分。这当然会导致一个具有多重职责的控制器。 Cells 绝对可以通过提供单独的 'MVC'-Stack 来清理它
          猜你喜欢
          • 2022-01-26
          • 1970-01-01
          • 2013-09-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多