Quando eu uso ajudantes, parciais, apresentadores e decoradores

Existem maneiras diferentes de organizar melhor suas opiniões. Parciais e auxiliares são os métodos padrão. Também há apresentadores e decoradores. Pode ser um pouco confuso saber como e quando usá-lo.

Minha organização

Cada técnica pode ter sua própria utilidade.

Ajudantes

Helpers são métodos genéricos que podem ser usados ​​para diferentes tipos de objetos. I criar esse tipo de ajudantes link_to_update, big_image, styled_form, etc. Esses métodos criar um código html com um estilo CSS ou um texto padrão, por exemplo.

Parciais

Parciais são usados ​​para dividir uma grande visão em partes lógicas menores e para código html maior. I pode ter uma parcial side_menu, comment_list, header, etc.

Apresentadores

Apresentadores são para consultas mais complicadas com dois ou mais modelos. Eu tenho alguns parciais como @page_presenter.page_in_category(ruby_category)ou @user_presenter.user_following(an_article).

Decoradores

Os decoradores devem atuar com apenas um modelo e não devem receber parâmetros (se possível). Eu posso fazer algo como isto user.full_name, page.big_titleou category.permalink. Eu uso a gema Draper .

Se eu pesquisar muitos modelos, não acesso a classe do modelo na visualização. Eu uso a função decorates_finders do draper .

Conclusão

Pode haver uma solução melhor, mas é para mim. Se você tiver uma solução melhor, por favor, me avise.

Tenho apenas uma coisa que não gosto para apresentadores. Não gosto de instanciar um objeto no controlador e passá-lo para a visualização. Não respeita as regras do Sandi Metz . Todas as regras podem ser quebradas por um bom motivo …