0

在一个相当大的 Rails 应用程序中,我们遇到了视图过于复杂的问题。大多数观点都有太多的逻辑。

视图有 2 到 4 个相关的实例变量,并利用各种逻辑检查和辅助方法来呈现视图。

这是一个假的例子:

<% if authorized?(@user) %>
  <!--some html-->
  <% recent_projects(@projects).each do |project| %>
    <!-- html & helper methods -->
  <% end %>
  <!--some more html-->
<% else %>
  <!--some html & helper methods-->
<% end %>

演示者、外观和助手:

我一直在研究使用外观和/或演示者模式来帮助在视图中展示我们需要的功能,同时提取和隔离复杂性。

我的问题是:

html在哪里?我是否制作了几个小视图部分并从辅助方法有条件地渲染它们?我是否创建了一个演示者,它具有处理 html 逻辑和输出的方法(使用 content_tag 等)?

任何一般的“最佳实践”或指导将不胜感激。如果我不清楚,请提出问题,我会尽快回复。

4

1 回答 1

1

我不确定最佳实践具体是什么,但我认为制作较小的视图部分是可行的方法,以便将视图代码分开并且可以单独维护。您的演示逻辑位于 Presenter 类中,并从app/views.

我认为使用 content_tag 会让你的 UI 设计师思考,比如说,如何将 css 类添加到元素,最终导致更多的维护时间。 content_tags 如果它们更小并且在样式方面不经常更新,则很好。

要记住的另一点是,如果您是一名开发人员,并且还追求代码的简洁性,那么想象编写一个带有多个内部标签的文本段落的content_tag多行块。<div />您必须开始操作字符串来处理这个问题,有时您和其他开发人员遵循代码会变得很耗时。

我确信将视图模板与演示者分开还有很多好处,但上面提到的一点是我从最近的一个项目中学到的。

于 2013-11-06T19:37:40.407 回答