2016-08-29 1 views
0

Ich bin sehr verwirrt, wie die application.html.erb Datei und die Ansichtsdateien kombinieren. Ich habe in meinem application.html.erb Datei die folgende (minimiert den Inhalt der Kürze halber):Warum verschiebt meine Ansichtsdatei meinen gesamten Kopfinhalt in den Körperteil?

<!DOCTYPE html> 
<html> 
    <head> 
    <!-- Bootstrap Css --> 
    <link href="/bootstrap-assets/css/bootstrap.css" rel="stylesheet"> 
    <%= yield :head %> 
    </head> 
<body> 
    <nav> 
     <!--Long navbar section --> 
    </nav> 
    <%= yield %> 
</body> 
</html> 

Meiner Ansicht Datei:

<html> 
<head> 
    <!-- View Specific Stylesheet --> 
    <link href="/css/ViewSpecific.css" rel="stylesheet" /> 
</head> 
<body> 
    <!-- View Specific Body --> 
</body> 

Was ich würde erwarten, ist, dass, wenn diese 2 Dateien kombinieren, die Ansicht spezifischen Laden von Stylesheets im Abschnitt und Anzeigen der spezifischen Körperlast im Abschnitt <body>. Das Endergebnis sendet das viewspezifische Stylesheet tatsächlich an den Abschnitt <body>, nachdem der navbar von application.html.erb bereits geladen wurde. Dies erzeugt offensichtlich das unerwünschte Ergebnis, dass ein Teil meines Körpers geladen wird, bevor das Stylsheet geladen wird, und die erste Sekunde, in der der Benutzer die Seite betrachtet, sieht alles schrecklich aus.

Antwort

1

Sie sollten content_for verwenden, wenn Sie die sichtspezifische head in den Kopfabschnitt von application.html.erb rendern möchten. Verwenden Sie

<% content_for :head do %> 
<!-- View specific head section --> 
    <link href="/css/ViewSpecific.css" rel="stylesheet" /> 
<% end %> 

Da Sie :head im application.html.erb ergeben, das ist alles getan werden. Und Sie brauchen keine html Tags in den Ansichten. Weitere Informationen finden Sie unter http://apidock.com/rails/v4.2.1/ActionView/Helpers/CaptureHelper/content_for

Verwandte Themen