我的Rails 4应用程序中有代理和品牌(代理有很多:品牌),每个都有:子域名字段。
所以我希望:
- agentsubdomain.domain.com (should redirect to 'agents#show')
- brandsubdomain.domain.com (should redirect to 'agents/brands#show')
我正在尝试在routes.rb中执行此操作:
resources :agents do
resources :brands, module: 'agents'
end
get '/', to: 'agents/brands#show',
constraints: lambda { |r| r.subdomain.present? && r.subdomain != 'www' }
get '/', to: 'agents#show',
constraints: lambda { |r| r.subdomain.present? && r.subdomain != 'www' }
root 'home#index'
这显然不起作用,因为只有第一个'/'匹配,总是去品牌#show。
如何重定向到代理#show OR agents / brands #show,具体取决于哪一个?
谢谢!
答案 0 :(得分:1)
创建routes_helper.rb模块。在其中创建两个名为“agents_brands_present?”的方法。还有一个叫做“agents_present?”然后让他们接收请求对象作为参数,并检查是否存在适当的子域。
require 'RoutesHelper'
get '/', to: 'agents/brands#show',
constraints: lambda { |r| r.subdomain.present? && RoutesHelper.agents_brand_present?(r) && r.subdomain != 'www' }
get '/', to: 'agents#show',
constraints: lambda { |r| r.subdomain.agents_present? && RoutesHelper.agents_present?(r) && r.subdomain != 'www' }