Когда использовать помощники вместо частичных - PullRequest
45 голосов
/ 30 декабря 2008

В приложении rails, в какой ситуации вы бы использовали частичное и когда вы бы использовали помощника? Я считаю, что оба очень похожи, так как они представляют фрагменты разметки.

Есть ли соглашение об этом? какой способ их использования?

Спасибо!

Ответы [ 6 ]

30 голосов
/ 30 декабря 2008

Я полагаю, что мое эмпирическое правило заключается в том, чтобы использовать помощника для создания единой «единицы» отображения - например, диапазона, содержащего ссылку, - и использовать частичное для построения более сложной единицы отображения, состоящей из более чем одна «единица» отображения - как сетка или меню.

18 голосов
/ 30 декабря 2008

Часть - это фрагмент вида, фрагмент вида, который полезен в нескольких местах и ​​извлекается для устранения дублирования. Суть, однако, в том, что представления - автономные или частичные - предназначены для представления.

Как вы знаете, контроллеры предназначены для обработки логики. Однако неизбежно, что вам потребуется некоторая логическая обработка при представлении представления. Так, например, если у вас есть какая-то часть презентации, доступная только администраторам, вы можете извлечь эту логику для помощника и сохранить представление «чистым» и только для представления. Помощники неизбежно будут содержать код представления - HTML-теги и т. Д. - но это побочный продукт их использования, а не их основная функция.

Вы также можете объединить два - частичное для презентации администратора и другое для пользовательской презентации, а также вспомогательный элемент с логикой для определения того, какой из них отображается в конкретной ситуации.

Только мои $ .02.

8 голосов
/ 03 марта 2011

Другие ответы представляют концептуальное согласие относительно использования помощников против частичных. Рассмотрим следующее для дальнейшего чтения:

Разработчик Basecamp, основанный на минимизации HTML в помощниках http://37signals.com/svn/posts/1108-what-belongs-in-a-helper-method

Viget dev проверил каждый и обнаружил, что помощники работают быстрее, чем частичные http://www.viget.com/extend/helpers-vs-partials-a-performance-question/

2 голосов
/ 30 декабря 2008

Я использую партиалы в качестве подшаблонов (т. Е. Что-то с разметкой, которая используется снова и снова, например, сообщение в блоге) и помощников для отображения большего количества логических вещей (div, который виден только администраторам, для экземпляр).

2 голосов
/ 30 декабря 2008

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

0 голосов
/ 03 марта 2011

Частицы - это часть представления, которая может содержать множество HTML-кода наряду с ruby-кодом. Вы также можете использовать партиалы в контроллере в методе рендеринга.

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

...