Je veux faire un rendu conditionnel au niveau de la mise en page basé sur le modèle réel a défini content_for(:an__area)
, une idée comment y parvenir?
ruby-on-rails
layout
yield
William Yeung
la source
la source
Réponses:
@content_for_whatever
est obsolète. Utilisez à lacontent_for?
place, comme ceci:la source
content_for?
n'existe que dans Rails 3. Dans Rails 2, vous pouvez utiliser la@content_for_...
variable d'instance.pas vraiment nécessaire pour créer une méthode d'assistance:
puis bien sûr à votre avis:
Je l'utilise tout le temps pour passer conditionnellement entre une disposition à une colonne et à deux colonnes
la source
la source
Peut créer un assistant:
Et utilisez ceci dans votre mise en page:
la source
Ok, je vais sans vergogne faire une auto-réponse car personne n'a répondu et j'ai déjà trouvé la réponse :) Définissez ceci comme une méthode d'aide soit dans application_helper.rb ou partout où vous avez trouvé pratique.
la source
instance_variable_defined?(content_var_name)
c'est un peu plus net qu'au lieu de tester si c'est nul. Deuxième point plus important, la variable d'instance content_for est obsolète, donc votre solution n'est pas à l'épreuve du tempsJe ne suis pas sûr des implications sur les performances de l'appel de yield deux fois, mais cela fonctionnera quelle que soit l'implémentation interne de yield (@content_for_xyz est obsolète) et sans code supplémentaire ni méthode d'assistance:
la source