什么是Rails Presenters文件夹?

时间:2016-04-06 17:51:44

标签: ruby-on-rails ruby directory mvp

Rails Presenters文件夹的用途是什么?这个文件夹里有什么?为什么需要此文件夹?

3 个答案:

答案 0 :(得分:4)

Presenters文件夹是您的Presenter代码所在的位置......我知道,很明显,我会解释......我认为演示者和装饰者的方式是作为模型的抽象来按摩数据属性在赋予视图之前。如果您熟悉帮助程序,那么,演示者就像帮助者一样,他们正在为视图准备一些数据,除了帮助程序通常用作所述视图的实用程序方法,而演示者更多地是关于呈现实际属性。

此链接很好地解释了差异:https://robertomurray.co.uk/blog/2014/decorators-presenters-delegators-rails/

希望有所帮助。

答案 1 :(得分:3)

presenters是一种通常被称为模型视图展示器(MVP)的设计模式

这是模型视图控制器模式的派生,用于创建用户界面。

对于使代码更加干燥而分离关注点非常有用。

以下是维基百科的描述

  

model - 定义要在用户界面中显示或以其他方式操作的数据的界面。

     

演示者 - 对模型和视图执行操作。它从存储库(模型)中检索数据,并将其格式化以在视图中显示。

     

view - 一个被动接口,用于显示数据(模型)并将用户命令(事件)路由到演示者以对该数据进行操作。

https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93presenter

Ruby on Rails中的演示者

演示者是位于模型和视图之间的简单类,它提供了一种很好的DRY面向对象的方式来处理复杂的显示逻辑。

在Rails中,约定是它们位于app/presenters文件夹

这是一篇有用的文章,解释了Ruby on Rails中的模式及其用法。

https://kpumuk.info/ruby-on-rails/simplifying-your-ruby-on-rails-code/

答案 2 :(得分:1)

演示者整理您的视图

当人们在Rails上下文中提到演示者时(相对于Model-View-Presenter,MVC,MVVM讨论等),他们指的是情况在您看来确实非常复杂:{ 1}}语句,到处都很难看懂。

或者采用日常比喻:假设您有一间非常凌乱的房子,到处都堆满了东西-因此很难穿行。您可以将演示者视为一个大型车库,在其中可以整齐地组织所有事情。这样一来,走过房子变得容易得多,而且您仍然拥有所需的所有用具。

回到rails上下文:Presenter允许您将所有复杂的逻辑删除到其他地方:Presenter的文件夹中,这样,当您阅读视图时,从更高层次上将更容易理解。混乱不存在,复杂性不存在:已经转移到其他地方。如果需要更多详细信息,则必须转到相关文件夹。逻辑不必包含在名为“ Presenters”的文件夹中,但可以按照惯例放置在该文件夹中。