2013-11-06 2 views
0

В довольно большом приложении с рельсами мы сталкиваемся с проблемой слишком сложных видов. Большинство взглядов имеют слишком много логики.Rails: презентаторы, фасады и помощники - где идет разметка html?

Представления имеют от 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 и т. Д.)?

Любые общие «лучшие практики» или руководство будут оценены. Если я не буду четко задавать вопросы, и я быстро отвечу.

+0

На всякий случай, если вы еще не натолкнулись на него, вам понравится [Иллюстрация] (http://devblog.avdi.org/2012/06/04/displaycase-gem-now-available/) и прекрасно работает вместе с докладчиком. – exbinary

ответ

1

Я не уверен, что такое лучшая практика, но то, что я думаю, заключается в том, что уменьшение частичного представления является способом перехода к тому, что код вида разделяется и может поддерживаться отдельно. Ваша логика представления находится внутри класса Presenter и отображает соответствующие частичные значения от app/views.

Я думаю, что использование content_tag заставит вашего дизайнера интерфейса подумать, скажем, как добавить класс css в элемент, что в конечном итоге приведет к увеличению времени обслуживания. content_tag s хороши, если они меньше и не часто обновляются с точки зрения стилизации.

Еще один момент, о котором следует помнить, - это если вы являетесь разработчиком, который также после чистоты кода, то представьте себе запись content_tag для многострочного блока <div /> с абзацем текста с несколькими внутренними тегами. Вам придется начинать манипулировать строками, чтобы справиться с этим, и иногда вам нужно много времени, чтобы вы и другие разработчики следили за кодом.

Я уверен, что существует много других преимуществ сохранения шаблона просмотра отдельно от докладчиков, но упомянутый выше вопрос является тем, что я узнал из одного из моих последних проектов.

Смежные вопросы