2017-04-13 69 views
0

我有一个网址https://www.openhub.net这是我的轨道4.2.7应用程序。我在另一个系统上有一个单独的子域,它是https://code.openhub.net/。如果您碰到第二个链接,这会将您重新路由到停用的页面。什么是code.openhub.net网址将被分解,将被重新路由到openhub.net。所以我想要做的是,当有人试图去code.openhub.net我的轨道应用程序有openhub.net将提供静态页面。问题是我无法概念化这将如何工作。例如,下面是路径下的rails文档片段。如何在route.rb中将子域路由到rails应用程序?

3.9基于请求的约束 您也可以根据返回字符串的请求对象上的任何方法约束路由。

您指定的请求,基于约束您指定的 段约束以同样的方式:通过调用Request对象 上的方法具有相同的名称作为

get 'photos', to: 'photos#index', constraints: { subdomain: 'admin' } 

You can also specify constraints in a block form: 

namespace :admin do 
    constraints subdomain: 'admin' do 
    resources :photos 
    end 
end 

请求限制工作散列键,然后将返回值 与散列值进行比较。因此,约束值应该与相应的Request对象方法返回类型相匹配。例如: 约束条件:{subdomain:'api'}将匹配api子域名为 ,但使用符号约束:{subdomain :: api}将不会是 ,因为request.subdomain返回'api'作为String。

我明白这份文件的意思,但是当我尝试将这些代码付诸实践时,我很难过。这里是我的routing.rb文件:

get '???', to: '???', constraints: { subdomain: 'code' } 

据我了解,网址中的子域名限制部分将是代码,但将getto是什么?我怎么知道会得到什么?我是否简单地将get code.openhub.net替换为CodeController#index?有没有人试图做过这样的事情?从文档中我看到请求对象有一个我可以调用的方法original_url。我可以利用这个方法吗?任何帮助将不胜感激。

回答

0

所列的请求对象的属性:

get '/', to: 'code#index', constraints: { subdomain: 'code' } 

这将请求路由到https://code.openhub.net/到您的CodeController中的index方法。

但是,该URL仍然会说https://code.openhub.net/。如果你不想这样做,你可以尝试重定向,像这样:

get '/', to: redirect('https://www.openhub.net/'), constraints: { subdomain: 'code' } 
+0

感谢您的帮助! –

相关问题