2014-11-22 96 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' – 2014-11-23 11:20:58

+0

這些幫助很大。但是,我仍然需要刪除域之前的所有內容,以便與db值進行比較。 – Jerome 2014-11-23 12:11:26

回答

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