Это зависит от того, сколько макетов вы хотите изменить с темами.
Если вы правильно построите свой HTML, большинство вещей можно сделать с помощью CSS. (смена шрифтов, цветов, где появляются вещи)
Тогда достаточно просто добавить параметр темы для стилизации.
Если вы не хотите этого делать, вы всегда можете создать для него отдельный макет и назначить его в зависимости от переданных параметров (или даже установить его как переменную сеанса, чтобы его не было в URL).
В основном, для темы по умолчанию вы придерживаетесь layouts/application.erb
, затем вы говорите layouts/theme1.erb
, который вы затем назначаете методом
class ApplicationController
layout :decide_layout
def decide_layout
@session[:layout] || 'application'
end
end
Настройка представлений возможна, просто выполнив что-то подобное в своих действиях:
def my_action
render "my_action_#{@session[:layout]}" if @session[:layout]
end
Если @session[:layout]
не задано, будет отображаться значение по умолчанию, в противном случае будет отображаться ваш тематический вид.
Конечно, если вы устанавливаете макет в зависимости от пользовательского ввода, обязательно выполните очистку и проверьте параметр макета перед этим.