Dynamische Körperidentifikation

7

Wie kann ich ID für body-Tag in Rails festlegen?

%Vor%     
demas 15.04.2011, 11:32
quelle

7 Antworten

4

Sie können eine Variable @body_id in Ihrer Aktion innerhalb eines Controllers oder in Ihrer Ansicht setzen und Sie können sie in Ihrem Layout verwenden.

Wenn Sie zum Beispiel eine Aktion index haben, können Sie diesen Code in Ihrem Controller hinzufügen:

%Vor%

oder in Ihrer Ansicht index.html.erb als:

%Vor%

Dann können Sie in Ihrem Layout application.html.erb hinzufügen:

%Vor%     
Matteo Alessani 15.04.2011, 11:42
quelle
24

Ich finde keine der Lösungen besonders elegant oder flexibel. Fügen Sie eine Methode body_class zu application_helper.rb hinzu:

%Vor%

.. im Layout:

%Vor%

Sie können dann den obigen Helper verfeinern, um andere Bezeichner wie Module dynamisch zu injizieren.

    
Damien Roche 10.09.2012 14:21
quelle
5

Sie sollten content_for tag hier verwenden.

In Ihrem Anwendungslayout:

%Vor%

Und dann aus jeder Sicht können Sie das nennen:

%Vor%

Das ist es:)

    
fl00r 15.04.2011 11:44
quelle
2

Sei vorsichtig! Folgendes funktioniert nicht in Schienen 3.1

%Vor%

Es könnte so aussehen, als ob es funktioniert, aber wenn Sie die Quelle anzeigen, werden Sie feststellen, dass Ihr body-Tag fehlt, wenn Sie es nicht überschreiben. Die meisten Browser funktionieren mit einem fehlenden Body-Tag.

Der richtige Weg ist wie folgt

%Vor%     
Lelon 22.09.2011 02:23
quelle
2

Seien Sie vorsichtig, Sie sollten keine View-Daten in Ihren Controllern einstellen, wie einige der oben genannten Posts empfohlen haben. Es bricht das MVC-Muster und erstellt unnötige Objekte, die nirgendwo anders als HTML-Versionen Ihrer Seiten verwendet werden.

Eine andere Sache, auf die Sie achten sollten, ist ein erhöhtes Risiko, wenn Sie Ihr Body-Tag innerhalb eines Logikblocks zuweisen - warum riskieren Sie, dass die Seite Ihr Body-Tag nicht ausgibt (die Seite bricht), wenn Sie es nicht müssen? Das obige Beispiel:

%Vor%

Jemand kann Ihre Bedeutung in einem Kind teilweise nicht vollständig verstehen, und Sie erhöhen nur die Verdoppelung des Body-Tags, was bedeutet, dass Sie mehr Plätze haben, um zu sehen, wenn jemand das Tag nicht beendet, usw. Es besteht keine Notwendigkeit dieses Risiko. Eine vernünftigere Lösung ist es, nur die Klasse zu liefern. Mit HAML können Sie optionale Klassenelemente bereitstellen, zB:

%Vor%

Und dann legen Sie diese Werte in Ihrer Ansicht fest:

%Vor%

Ich würde eine Lösung lieben, die es mehreren Partialteilen erlaubt, Klassen zu dem einen Yield-Block hinzuzufügen, aber noch keinen nicht-hacky Weg gefunden habe, dies zu tun.

    
rob_salad 01.03.2013 00:54
quelle
0
%Vor%

und in Ihrem Controller können Sie dies einstellen

%Vor%     
robzolkos 15.04.2011 11:39
quelle
-1

U hat nicht wirklich erklärt, was genau du tun musst, meine erste Vermutung ist:

%Vor%     
hs2d 15.04.2011 11:38
quelle

Tags und Links