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 hacer esto?Rieles comprobar si el rendimiento: el área se define en content_for
Respuesta
@content_for_whatever
está en desuso. Uso content_for?
lugar, como este:
<% if content_for?(:whatever) %>
<div><%= yield(:whatever) %></div>
<% end %>
Helper 'content_for?' Existe solo en Rails 3. En Rails 2 podría usar '@content_for _...' instance variable . – lest
¡Excelente! He escrito alternativas para esto por mucho tiempo. Ya no. – morganjlopes
también funciona en rieles 4. great thx – daniel
Ok, voy a hacer una autocomplicación descarada ya que nadie ha respondido y ya he encontrado la respuesta :) Defina esto como un método de ayuda en application_helper.rb o en cualquier lugar que considere conveniente.
def content_defined?(symbol)
content_var_name="@content_for_" +
if symbol.kind_of? Symbol
symbol.to_s
elsif symbol.kind_of? String
symbol
else
raise "Parameter symbol must be string or symbol"
end
!instance_variable_get(content_var_name).nil?
end
Heh, bueno, me gusta su respuesta automática, pero ... Punto menor, 'variable_variable_de_instancia? (Nombre_del_varizador_contenedor)' es un poco más ordenado que en lugar de probar si es nulo. Segundo punto más grande, la variable content_for instance está en desuso por lo que su solución no es a prueba de futuro –
se puede crear un ayudante:
def content_defined?(var)
content_var_name="@content_for_#{var}"
!instance_variable_get(content_var_name).nil?
end
y utilizar esto en su diseño:
<% if content_defined?(:an__area) %>
<h1>An area is defined: <%= yield :an__area %></h1>
<% end %>
Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar aclaraciones de un autor, deje un comentario debajo de su publicación. – eirikir
Estoy de acuerdo @eirikir, no estoy seguro de lo que estaba pensando mi hijo menor de 6 años. Estoy ampliando y dejando mi respuesta para aquellos que todavía están en Rails 2 ... sin el preámbulo innecesario;) – Nick
no es realmente necesario para crear un método de ayuda:
<% if @content_for_sidebar %>
<div id="sidebar">
<%= yield :sidebar %>
</div>
<% end %>
entonces por supuesto en su punto de vista:
<% content_for :sidebar do %>
...
<% end %>
Yo uso todo el tiempo para ir de forma condicional entre un diseño de una columna y dos columnas
No estoy seguro de las implicaciones de rendimiento de rendimiento llamar dos veces, pero esto va a hacer independientemente de la interna implementación de rendimiento (@content_for_xyz está en desuso) y sin ningún tipo de código o métodos auxiliares adicionales:
<% if yield :sidebar %>
<div id="sidebar">
<%= yield :sidebar %>
</div>
<% end %>
<%if content_for?(:content)%>
<%= yield(:content) %>
<%end%>
- 1. content_for vs rendimiento en parciales
- 2. Rieles content_for sobrescribe en lugar de agrega
- 3. Rieles: ¿Dónde se define "params"?
- 4. Comprobar si el proceso se está ejecutando
- 5. Rieles: usando "content_for" después de la distribución interior correspondiente "yield"
- 6. Incluyendo javascript en línea usando content_for en rieles
- 7. Rieles Rendimiento con parámetro en Bigote
- 8. Java - El texto JButton desaparece si actionPerformed se define después
- 9. Zend_Auth comprobar si el usuario se registra en
- 10. php comprobar si se ha hecho clic en el enlace
- 11. Comprobar si el proceso se ejecuta en Windows/Linux
- 12. Cómo comprobar si el objeto se ha dispuesto en C#
- 13. Si el rendimiento nunca se produce, ¿se devuelve nulo?
- 14. ¿Comprobar PHP si el objeto se puede convertir a entero?
- 15. ¿Cómo comprobar si el programa se ejecuta desde una consola?
- 16. ¿Puede NHibernate comprobar si se ha generado el esquema db?
- 17. Django: Comprobar si el atributo de clave externa se establece
- 18. Cómo comprobar si el elemento se está arrastrando actualmente
- 19. Cómo comprobar si el correo se ha enviado correctamente
- 20. programación comprobar para ver si el calendario se ha prestado
- 21. Comprobar si el objeto se pueden traer recolector de basura
- 22. Comprobar si el subproceso está en el contexto Gui
- 23. Comprobar si una ventana emergente se cierra
- 24. JavaScript - cómo comprobar si el evento ya se ha agregado
- 25. prueba si se define una propiedad MSBuild?
- 26. Comprobar si el cronómetro está funcionando
- 27. Cuál es el mejor enfoque para monitorear el rendimiento del sitio en rieles
- 28. ¿Cómo comprobar si el descifrado fue exitoso?
- 29. Verificando si se define una variable?
- 30. Comprobando si se define un símbolo
Ver mi [respuesta] (http://stackoverflow.com/questions/3347322/yield-if-content-render-something-otherwise-rails-3/7409626 # 7409626) para crear un método auxiliar para encapsular este comportamiento en Rails 3. – tristanm