К сожалению, у Родоса есть ужасная документация, поэтому его механику может быть сложно расшифровать. Но я должен отметить, что, к сожалению, Джеффри совершенно не прав в этом вопросе:
Вы не можете просто назначить макет для всего контроллера
На самом деле, вы можете просто назначить макет для контроллера. Существует множество способов, но, в частности, вы можете делать то, что якобы упоминают в документах, но не так, как пытались «идешены». Если вы проверите исходный код в render.rb
, вы заметите, что RhoController
определяет метод установки для этой конкретной цели , который является базовой механикой Ruby.
def self.layout(name)
@layout = name
end
Поэтому вы можете использовать self.layout = :layout_name
или @layout = :layout_name
внутри контроллера для определения макета по умолчанию. Я не знаю сложности того, как это может быть переопределено, но этот метод позволит вам установить макет по умолчанию для любого контроллера. Я проверял это сам.
В RhoController
также есть метод, который извлекает имя макета, и вы, конечно, можете переопределить его внутри своего собственного контроллера, если хотите настроить поведение при выборе макета.
def self.get_layout_name
@layout.nil? ? 'layout' : @layout
end