Всем привет.
Есть приложение на rails. И основной сайт под управлением этого приложения. Все ссылки на этом сайте без ЧПУ.
Делаем на основе нашего приложения персональный сайт для одного из клиентов (дизайн - его собственный, функционал наш).
Желание клиента - иметь ссылки с ЧПУ. Изменить ссылки глобально не представляется возможным, так как они используются и вне нашего сайта. Ок, создаем дубли наших маршрутов с использованием префикса. То есть был маршрут с именем index, появился новый с именем clientname_index и так далее.
Но во многих action'ах используются вызовы хелперов для именованых маршрутов. Ставить везде условия о том, какой хелпер вызывать - колхозом пахнет :)
Поэтому было принято решение в application_controller добавить следующую конструкцию:
def set_template_and_vars
if '%clients_domain%' == request.host
params[:template] = 'clients_template'
%w(index project ...куча других имен маршрутов).each do |name|
self.class.send('define_method', ("#{name}_path")) { |arguments| send("clientname_#{name}_path", arguments) }
end
end
end
но, почему-то кажется, что можно сделать более правильно.
Какие минусы есть у этого решения и как сделать более правильно?
Заранее спасибо.