2014-11-22 5 views
0

Попытка принять запрос домена и перенаправить его на действие индекса контроллера.Рельсы Rails по запросу

Домен хранится в базе данных как @site.host. Сайт назначается контроллеру через @ site.controller.
Контроллер приложений извлекает хост

@site ||= if match = request.host.match(/.*?([^.]+\.[^.]+\.[^.]+$)/) 
    domain = match[1] 
    Site.find_by_host(domain) 
end || Site.find(:first) 

Но следующий терпит неудачу:

if request.url.split('?').first == ("https://" + @site.host) 
    redirect_to :controller => @site.controller, :action => 'index' 
end 
+0

Вам не обязательно соответствовать этому материалу вручную. Проверьте 'request.protocol',' request.host', 'request.url',' request.port', 'request.host_with_port',' request.domain', 'request.subdomain' –

+0

Они были полезны. Тем не менее, мне все же нужно было разделить все, что было до домена, для сравнения с значением db. – Jerome

ответ

0

Решение состоит в том с помощью базы данных сгенерированных значений сеанса, которые затем по сравнению с запросом и перенаправлять соответствующим образом

r_host = session[:host] + "/" 
r_host_n = session[:host] 
if request.url.split("//").last == (r_host || r_host_n) 
    redirect_to :controller => session[:controller], :action => 'index' 
end 
Смежные вопросы