2016-05-11 11 views
1

Ich habe eine :sticky_footer Region in meiner application.html.haml Datei:Ruby on Rails - Klasse Körper nur hinzufügen, wenn content_for (: partial) wahr ist

= yield :sticky_footer 

Ich mag ein has-sticky-footer hinzufügen? Klasse zum Body-Knoten, wenn die sticky_footer-Region Inhalt enthält.

Ich habe versucht zu tun:

body{class: content_for?(:sticky_footer) ? "has-sticky-footer" : "no-sticky-footer"} 

Doch diese auch zu falsch zu bewerten scheint, wenn die content_for später im Code definiert ist.

Welche anderen Optionen habe ich?

Antwort

0

Allerdings scheint dies falsch zu bewerten, auch wenn content_for später im Code definiert ist.

Das stimmt. Zum Zeitpunkt des Tests content_for? wurde es nicht definiert, daher ist der Wert falsch. erste

die Definition tun ..., bevor der Körper Linie

-content_for :sticky_footer do 
    # define the content here 

dann die Klasse für den Körper einfügen

später im Code Sie die content_for ergeben können

=content_for :sticky_footer 
# or 
=yield :sticky_footer 
+0

Dank, Allerdings möchte ich das: content_for (: sticky_footer) in die Ansichten einfügen, in denen es verwendet wird, und deren Inhalt über dem Body-Tag platziert wird, irgendwelche anderen Ideen? –

+0

Nur um klar zu sein, wo es benutzt wird und wo es definiert ist, muss nicht der gleiche Ort sein. Sie können oberhalb des Body-Tags definieren, dass Sie verwenden können, wo immer Sie wollen (solange es vorher definiert ist). Und es muss definiert werden, bevor Sie 'content_for?' Testen – SteveTurczyn