Я хочу сделать условный рендеринг на уровне макета на основе фактического определенного шаблона content_for(:an__area)
, есть идеи, как это сделать?
ruby-on-rails
layout
yield
Уильям Юнг
источник
источник
Ответы:
@content_for_whatever
устарела. Используйтеcontent_for?
вместо этого, например:источник
content_for?
существует только в Rails 3. В Rails 2 вы можете использовать@content_for_...
переменную экземпляра.на самом деле не нужно создавать вспомогательный метод:
тогда, конечно, на ваш взгляд:
Я использую это все время, чтобы условно переходить между макетом в один и два столбца.
источник
источник
Может создать помощника:
И используйте это в своем макете:
источник
Хорошо, я собираюсь беззастенчиво ответить себе, так как никто не ответил, и я уже нашел ответ :) Определите это как вспомогательный метод либо в application_helper.rb, либо в любом другом месте, которое вы сочтете удобным.
источник
instance_variable_defined?(content_var_name)
это немного лучше, чем вместо того, чтобы проверять, равен ли он нулю. Второй важный момент: переменная экземпляра content_for устарела, поэтому ваше решение не годится для будущегоЯ не уверен в последствиях для производительности двойного вызова yield, но это будет происходить независимо от внутренней реализации yield (@content_for_xyz устарело) и без какого-либо дополнительного кода или вспомогательных методов:
источник