Quiero hacer una representación condicional en el nivel de diseño basado en la plantilla real que se ha definido content_for(:an__area)
, ¿alguna idea de cómo hacerlo?
ruby-on-rails
layout
yield
William Yeung
fuente
fuente
Respuestas:
@content_for_whatever
es obsoleto. Use en sucontent_for?
lugar, así:fuente
content_for?
solo existe en Rails 3. En Rails 2 puede usar la@content_for_...
variable de instancia.no es realmente necesario para crear un método auxiliar:
luego, por supuesto, en su opinión:
Utilizo esto todo el tiempo para ir condicionalmente entre un diseño de una columna y dos columnas
fuente
fuente
Puede crear un ayudante:
Y usa esto en tu diseño:
fuente
Ok, voy a hacer una auto respuesta descaradamente, ya que nadie ha respondido y ya he encontrado la respuesta :) Defina esto como un método auxiliar en application_helper.rb o en cualquier lugar que le resulte conveniente.
fuente
instance_variable_defined?(content_var_name)
es un poco más ordenado que en lugar de probar si es nulo. Segundo punto más importante, la variable de instancia content_for está obsoleta, por lo que su solución no está preparada para el futuroNo estoy seguro de las implicaciones de rendimiento de llamar a yield dos veces, pero esto funcionará independientemente de la implementación interna de yield (@content_for_xyz está en desuso) y sin ningún código adicional o métodos auxiliares:
fuente