Rails路由、URL和子域名 (注:本文为提问标题,无需回答)

12

我的Ruby应用程序被划分为不同的命名空间。 例如:free(free.domain.com),pro(pro.domain.com),vip(vip.domain.com) 在路由文件中看起来像这样:

我的Ruby应用程序被划分为不同的命名空间。 例如:free(free.domain.com),pro(pro.domain.com),vip(vip.domain.com) 在路由文件中看起来像这样:

namespace :free do
  match 'home' => 'free#home', :via => [:get, :post], :as => :home
  #more routes
end

namespace :pro do
  match 'home' => 'pro#home', :via => [:get, :post], :as => :home
  #more routes
end

namespace :vip do
  match 'home' => 'vip#home', :via => [:get, :post], :as => :home
  #more routes
end

match '/about'                => 'pages#about'
match '/team'                 => 'pages#team'
match '/press'                => 'pages#press'
#more routes

我希望无论在应用程序的哪个位置,当有一个链接像pro_home_path这样时,URL都可以是pro.domain.com/home。

因此,在路由文件中是否可以添加子域(类似于namespace: vip,subdomain => vip do)来将子域附加到相应的命名空间?

编辑:所以我添加了一个constraint constraints(:subdomain => "newsfeed") do

但是,当我执行pro_home_path时,我得到的链接是lvh.me/3000/pro/home,而不是pro.lvh.me:3000/home。

1个回答

18

是的,您可以将子域名指定为限制条件,例如:

get 'photos', constraints: {subdomain: 'admin'}

请查看关于此主题的Rails指南:http://guides.rubyonrails.org/routing.html#request-based-constraints

要链接到特定子域,可以在URL路由助手中指定。例如,home_url(subdomain: 'pro') 可能重定向到 http://pro.example.com/home。请注意使用 _url 后缀方法,因为 home_path 将无法重定向到特定子域。


我编辑了我的帖子并添加了一个限制条件,但它没有重定向到子域名。 - bl0b
我已经更新了答案,包括解决方案。我认为如果不编写自己的帮助程序或找到一个可以实现此功能的宝石,就没有更好的方法来完成它。 - Michael Lawrie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接