MVC 应用程序和控制器设计

MVC Application and Controller Design

我对 MVC 比较陌生,对 Rails 上的 Ruby 也很陌生。我第二次阅读了 Michael Hartl 的优秀 Ruby on Rails Tutorial,我对应用程序架构有疑问。在第三章中,他创建了一些静态页面,其中包含来自同一控制器的操作。这在 MVC 架构中常见吗?

您如何确定哪些页面应该有相同的控制器,哪些页面应该有自己的单独控制器?我假设客户和联系人会有自己的控制器,但是仪表板或联系人页面之类的东西,他们可以使用同一个控制器吗?

其实静态页面并不是真正的MVC,想一想:它们是静态的,所以它们没有业务逻辑。基本上你最终会得到一个 VC 而不是 MVC (该模型将不存在)。

通常,仅对于静态页面,除非它们需要一些特殊的路由,否则您将使用一个控制器和一堆操作,直接结果将是具有类似

的目录结构
views/static_pages/<youstaticpage>.html.erb

这很好,特别是如果您的静态页面 真的是静态的,那么您最终最多有 ~10 个页面。

当您需要从数据库中提取数据时,我建议将该页面提取到它自己的控制器中。因此,例如,如果您将网站 email/phone/address/whatever 存储在某个位置,并且您需要在 关于 页面中获取和使用它,我建议创建您的 AboutController 并处理一切都通过它。

这样您就可以保持 StaticPagesController 非常干净。话虽这么说,如果你想严格遵守 MVC,你应该为每个静态页面一个控制器,但在这种情况下真的毫无价值。当你需要的时候提取代码,它仍然很容易:当你没有一个简单的页面时,将它提取到它自己的控制器中。

我从 POODR 中学到的一件重要事情是代码必须足够好。此外,你应该在需要的时候开始重构,过度设计是一个丑陋的野兽。相信我,我喜欢过度设计的东西。