Eu quero fazer uma renderização condicional no nível de layout com base no modelo real definido content_for(:an__area)
, alguma ideia de como fazer isso?
ruby-on-rails
layout
yield
William Yeung
fonte
fonte
Respostas:
@content_for_whatever
está obsoleto. Use em seucontent_for?
lugar, assim:fonte
content_for?
existe apenas no Rails 3. No Rails 2 você pode usar a@content_for_...
variável de instância.não é realmente necessário para criar um método auxiliar:
então é claro em sua opinião:
Eu uso isso o tempo todo para ir condicionalmente entre um layout de uma coluna e duas colunas
fonte
fonte
Pode criar um ajudante:
E use isso em seu layout:
fonte
Ok, vou fazer uma auto-resposta descaradamente, pois ninguém respondeu e eu já encontrei a resposta :) Defina isso como um método auxiliar em application_helper.rb ou em qualquer lugar que você achar conveniente.
fonte
instance_variable_defined?(content_var_name)
é um pouco mais puro do que em vez de testar se é nulo. Segundo ponto importante, a variável de instância content_for está obsoleta, então sua solução não é à prova de futuroNão tenho certeza das implicações de desempenho de chamar yield duas vezes, mas isso funcionará independentemente da implementação interna de yield (@content_for_xyz está obsoleto) e sem nenhum código extra ou métodos auxiliares:
fonte