9

我读过 HMVC(分层模型视图控制器),它是灵活的结构。

看看这张照片:

http://techportal.inviqa.com/wp-content/uploads/2010/02/MVC-HMVC.png

我想知道 Rails 3 插件是否是 Rails 3 中 HMVC 的答案?

4

4 回答 4

3

根据对 Toby 回答的评论,您似乎希望能够将 MVC 应用程序用作新应用程序中的组件。Rails 引擎(参见http://rails-engines.org)提供了这个功能。您只需安装引擎 gem 并将应用程序放在供应商/插件中,它的模块/视图/控制器都可以访问。

这并不真正符合新应用程序中的控制器委托给其他控制器的 HMVC。但像托比一样,我看不到这样做的好处。

引擎方法的好处在于,您只需将模型的一个版本添加到新的应用程序应用程序/模型文件夹中即可覆盖插件中的任何模型(同样适用于视图和控制器)

我已经覆盖了应用程序/视图/布局,以使我的身份验证应用程序/插件具有与其包含的应用程序相同的外观和感觉。

对于 Rails 3,Railtie 取代了引擎并得到官方支持(并且实际使用了 - Action Mailer 是一个 Railtie 插件。不过我自己还没有使用它。

查看http://edgeapi.rubyonrails.org/classes/Rails/Railtie.html

在这里也有一篇很好的文章http://www.igvita.com/2010/08/04/rails-3-internals-railtie-creating-plugins/

于 2010-09-09T14:58:29.060 回答
2

Rails 有插件很长时间了。

我怀疑控制器无法分派到另一个控制器,沿链传递请求对象是否存在技术原因。我只是不知道你这样做会得到什么——图表看起来像意大利面条。

对我来说,这是对 MVC 的滥用。我建议将逻辑推送到较低级别的模型和类中并创建一个位于该逻辑前面的单个控制器,而不是创建一个控制器链,这要简单得多且更易于维护。

于 2010-08-25T22:15:36.267 回答
1

在 Rails 3 博客文章中,DHH 提到了 Cells项目。我没用过,但我会去看看。

购物车示例很好地展示了这种功能如何清理您的应用程序代码。检索数据的代码应该放在控制器的某个地方。在每个动作或之前的过滤器中。Cell 似乎是更好的解决方案。

于 2010-09-08T06:57:46.477 回答
0

请查看此 ruby​​onrails-talk 帖子:https ://groups.google.com/forum/#!topic/rubyonrails-talk/0c4TT7UOGCw

于 2014-06-01T18:14:03.707 回答