Warum sollten Helfer nicht html in ihnen haben?

8

Ich habe gehört, dass es am besten ist, keinen HTML-Code in Ihren Helfern zu haben. meine Frage ist: Warum nicht? Und außerdem, wenn Sie versuchen, eine HTML-Liste oder etwas ähnliches zu generieren, wie kann ich tatsächliche Tags vermeiden?

Danke!

-frew

    
Frew Schmidt 25.09.2008, 15:00
quelle

6 Antworten

15

Mein Ratschlag - wenn es kleine HTML-Teile sind (ein paar Tags), machen Sie sich keine Sorgen. Mehr als das - denke über Partials (wie das Ziehen von Strings von HTML zusammen in einem Helfer ist ein Schmerz, das ist, was die Ansichten gut sind).

Ich füge HTML regelmäßig in meine Helfer ein (entweder direkt oder durch Aufrufe von Rails-Methoden wie link_to). Meine Welt ist nicht um mich herum zusammengebrochen. In der Tat würde ich so weit sagen, dass mein Code sehr sauber, wartbar und verständlich ist.

Erst letzte Nacht habe ich einen link_to_user-Helfer geschrieben, der html mit normaler Verbindung zum Benutzer zusammen mit dem Benutzer-Icon daneben ausspuckt. Ich hätte es teilweise tun können, aber ich denke Link_to_user ist ein viel sauberer Weg, damit umzugehen.

    
RichH 25.09.2008, 19:48
quelle
5

Ich sehe nicht, dass irgendetwas daran falsch ist. Die Mehrheit der Rails-Helfer generieren HTML-Code (was ihr Zweck ist) - das bedeutet für mich, dass Sie das selbst tun sollten.

Es gibt jedoch das allgegenwärtige Problem der Lesbarkeit von Code. Wenn Sie einen Helfer haben, der nur eine große Menge von reinem HTML erstellt, wird es schwer zu verstehen sein. Während es in Ordnung ist, HTML in Helfern zu generieren, sollten Sie Dinge wie content_tag und render :partial tun und nicht nur return %Q(<a href="#{something}">#{text}>)

    
Orion Edwards 25.09.2008 21:25
quelle
2

Dies ist keine vollständige Antwort auf Ihre Frage, aber Sie können html in Ihren Tags über die erstellen content_tag Methode. Meine Vermutung, warum wäre Sauberkeit des Codes.

Mit content_tag können Sie auch Tags in Blöcken verschachteln. Sehen Sie sich diesen Blogeintrag auf content_tag an.

    
Sixty4Bit 25.09.2008 15:06
quelle
1

In Rails 3 können Sie die * html_safe * String-Methode verwenden, damit Ihre Hilfsmethoden HTML-Tags zurückgeben, die nicht maskiert werden.

    
Guilherme Garnier 30.06.2011 17:36
quelle
0

Wie bereits erwähnt, werden Helfer im Allgemeinen als Geschäftslogik verwendet, um etwas zu tun, das den Ansichtscode antreibt, aber es ist nicht der Ansichtscode selbst. Der üblichste Ort, um Dinge zu platzieren, die Code-Schnipsel erzeugen, ist ein partieller. Partials können bei Bedarf einen Helper rufen, aber um die Dinge getrennt zu halten, ist es am besten, das Geschäft im Helper zu halten und in den Partials zu schauen.

Denken Sie auch daran, das ist alles Konvention, nicht harte und schnelle Regeln. Wenn es einen guten Grund gibt, die Konvention zu brechen, tun Sie, was am besten funktioniert.

    
Misplaced 25.09.2008 15:52
quelle
-1

Ich habe html normalerweise in Teiltöne geschrieben.

Denken Sie über Semantik nach. Wenn Sie HTML in eine Zeichenfolge einfügen, verlieren Sie den semantischen Aspekt: ​​Es wird zu einer Zeichenfolge anstelle von Markup. Sehr verschieden. Beispielsweise können Sie eine Zeichenfolge nicht validieren, aber Sie können die Markierung überprüfen.

Der Grund, warum ich html in einen Helfer anstatt in einen Teil setzen möchte (und wie ich diesen Thread gefunden habe), ist Knappheit. Ich würde gerne =hr anstelle von =render 'hr' schreiben können.

Um die Frage zu beantworten habe ich nicht gefragt ;-): um HTML in einem Helfer zu entschlüsseln, versuchen Sie dies

%Vor%     
Victor Piousbox 05.08.2012 02:53
quelle

Tags und Links