Ich möchte ein bedingtes Rendern auf Layoutebene basierend auf der tatsächlich definierten Vorlage durchführen. Haben Sie content_for(:an__area)
eine Idee, wie dies erreicht werden kann?
ruby-on-rails
layout
yield
William Yeung
quelle
quelle
Antworten:
@content_for_whatever
ist veraltet. Verwenden Siecontent_for?
stattdessen wie folgt:quelle
content_for?
ist nur in Rails 3 vorhanden. In Rails 2 können Sie eine@content_for_...
Instanzvariable verwenden.nicht wirklich notwendig, um eine Hilfsmethode zu erstellen:
dann natürlich aus deiner sicht:
Ich benutze dies die ganze Zeit, um bedingt zwischen einem einspaltigen und einem zweispaltigen Layout zu wechseln
quelle
quelle
Kann einen Helfer erstellen:
Und verwenden Sie dies in Ihrem Layout:
quelle
Ok, ich werde schamlos eine Selbstantwort machen, da niemand geantwortet hat und ich die Antwort bereits gefunden habe :) Definieren Sie dies als Hilfsmethode entweder in application_helper.rb oder an einer Stelle, die Sie für zweckmäßig befunden haben.
quelle
instance_variable_defined?(content_var_name)
Kleiner Punkt, ist ein bisschen ordentlicher als anstatt zu testen, ob es null ist. Der zweite größere Punkt, die Variable content_for instance, ist veraltet, sodass Ihre Lösung nicht zukunftssicher istIch bin mir nicht sicher, welche Auswirkungen es hat, wenn Yield zweimal aufgerufen wird. Dies funktioniert jedoch unabhängig von der internen Implementierung von Yield (@content_for_xyz ist veraltet) und ohne zusätzlichen Code oder Hilfsmethoden:
quelle