如何仅在特定子域上提供控制器? - Rails 3.1

时间:2011-12-28 21:01:50

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我有一个控制器Partners我想要服务于http://partners.example.com

  1. Rails 3.1中是否有内置的东西,我可以用于没有搞乱httpd.conf或创建另一个虚拟主机?

  2. routes.rb条目对此有什么影响?

  3. 非常感谢任何帮助。

    PS。我不是在这里做通配符子域 - 只是一个子域。

    更新:我已经让子域与下面的Ahmish解决方案一起使用,但现在所有其他路由也会对该子域做出响应。有没有办法让子域名完全响应指定的控制器?

2 个答案:

答案 0 :(得分:2)

您应该可以使用routes.rb更新来完成此操作。在rails routing guide中查看基于请求的约束。

答案 1 :(得分:2)

确实可以。

如果PartnersController是基于REST的控制器,就像在resources的调用中添加约束选项一样简单。

resources :partners, :constraints => { :subdomain => "partners" }

或者,可以使用块调用constraints,并且块内的所有路由调用都将受设置子域约束。

constraints :subdomain => "partners" do
  resources :partners
  ...
end

对没有正确子域的受约束URL的请求将抛出RoutingError