2008-12-30 10 views
41

In einer Rails-Anwendung, in welcher Situation würden Sie eine teilweise verwenden und wann würden Sie einen Helfer verwenden? Ich finde beide sehr ähnlich, da sie Markup-Fragmente darstellen.Wann Helfer anstelle von Partials

Gibt es eine Konvention um diese? Welches ist der "Weg", sie zu benutzen?

Danke!

Antwort

28

Ich denke, meine Faustregel ist, einen Helper zu verwenden, um eine einzelne "Einheit" der Anzeige zu erstellen - wie eine Spanne, die eine Verknüpfung enthält - und eine partielle zu verwenden, um eine komplexere Anzeigeeinheit aus mehr zu erstellen als eine "Einheit" der Anzeige - wie ein Raster oder ein Menü.

2

Ich benutze Helfer, wenn der Code wahrscheinlich in anderen Projekten wieder verwendet wird, und Partials für Code für das Projekt.

2

Ich benutze Partials als Subtemplates (dh etwas mit viel Markup, das immer wieder verwendet wird, wie ein Blogpost-Klappentext), und Helfer, um mehr logische Dinge zu behandeln (ein div, das nur für Admins sichtbar ist, zum Beispiel).

17

Ein Teil ist ein Ansichtsfragment, ein Teil einer Ansicht, die an mehreren Stellen nützlich ist und herausgezogen wird, um Duplikate zu entfernen. Unter dem Strich ist es jedoch so, dass Ansichten - einzeln oder teilweise - für die Präsentation gedacht sind.

Wie Sie wissen, sind Controller für die Verarbeitung von Logik. Es ist jedoch unvermeidlich, dass Sie eine logische Verarbeitung benötigen, wenn Sie eine Ansicht präsentieren. Wenn Sie zum Beispiel eine Präsentation haben, die nur für Administratoren verfügbar ist, können Sie diese Logik zu einem Helfer extrahieren und die Ansicht "rein" und nur für die Präsentation behalten. Helfer werden unweigerlich Präsentationscode enthalten - HTML-Tags und dergleichen - aber das ist ein Nebenprodukt ihrer Verwendung, nicht ihre primäre Funktion.

Sie können die beiden auch kombinieren - eine partielle für die Admin-Präsentation und eine andere für die Benutzerpräsentation und einen Helfer mit der Logik, um zu bestimmen, welche in einer bestimmten Situation gerendert wird.

Nur meine $ .02.

+3

Aber Schienen verwendet Helfer nur für die Präsentation (wie Kontrollkästchen und Textfelder) –

7

Die anderen Antworten stellen den konzeptuellen Konsens in Bezug auf den Einsatz von Helfern gegenüber Teilsystemen dar. Betrachten Sie das folgende zur weiteren Lektüre:

Base-Camping Entwickler machen den Fall zur Minimierung von HTML in Helfer http://37signals.com/svn/posts/1108-what-belongs-in-a-helper-method

Viget dev jeder gebenchmarkt und stellte fest, dass Helfer schneller als partials http://www.viget.com/extend/helpers-vs-partials-a-performance-question/

+1

+1 für die gemeinsame Nutzung von großen Ressource Links –

+2

Leistung ist ähnlich in der Produktion: http://bindle.me/blog/index.php/26/helpers-vs -Partials-aus-einer-Performance-Perspektive – sampablokuper

0

Partials sind der Teil von Ansicht, die einen Haufen HTML-Code zusammen mit Ruby-Code enthalten kann. Sie können die Teiltöne im Controller auch in der Rendermethode verwenden.

Im Falle von Helfern können Sie Methoden für kurze HTML-Code haben. Sie können einige Berechnungsmethoden verwenden, die Sie in Ihrer Ansichtsdatei verwenden möchten.