如何根据子域数组约束Rails路由?

And*_*rew 3 ruby-on-rails

我有一个Rails 4.2应用程序,其中包含一组约束到子域的路由.

constraints subdomain: 'admin' do
  # ...
end
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何指定多个子域(两者adminadmin.staging).如何指定多个子域?

And*_*rew 6

即使没有记录,您也可以传递一个子域数组:

constraints subdomain: ['admin', 'admin.staging'] do
  # ...
end
Run Code Online (Sandbox Code Playgroud)


Jor*_*ing 5

您可以使用正则表达式,例如:

constraints subdomain: /^admin|admin\.staging$/ do
  # ...
end
Run Code Online (Sandbox Code Playgroud)

...要么...

constraints subdomain: /^admin(\.staging)?$/ do
  # ...
end
Run Code Online (Sandbox Code Playgroud)

你也可以使用lambda:

constraints subdomain: ->(req) { %w[ admin admin.staging ].include?(req.subdomain) } do
  # ...
end
Run Code Online (Sandbox Code Playgroud)

您可以在constraints这里阅读文档:http://api.rubyonrails.org/classes/ActionDispatch/Routing/Mapper/Scoping.html#method-i-constraints