子域路由似乎不起作用

时间:2012-12-27 05:00:43

标签: ruby-on-rails ruby-on-rails-3 routes subdomain

想知道为什么我的路线无法使用rails guide中描述的内容。 http://admin.foo.dev:3000/将我带到root_path,而不是admin::pages#home

第一种方法有效。这取自Railscast

# WORKS!

match '', to: 'pages#home', constraints: lambda { |r| r.subdomain.present? && r.subdomain != 'www' }

# does NOT work!

namespace :admin do
  constraints :subdomain => "admin" do
    root :to => 'pages#home'
  end
end

我在/etc/hosts设置了所有内容。它看起来像:

127.0.0.1 localhost
127.0.0.1 api.foo.dev admin.foo.dev foo.dev www.foo.dev

1 个答案:

答案 0 :(得分:2)

由于您的路线位于命名空间内,因此将您带到admin::pages#home的正确网页将为http://admin.foo.dev:3000/admin/。删除命名空间以正确连接。

一般情况下,如果您对生成的路线以及如何到达这些路线感到困惑,请使用rake routes。有关命名空间路由的更多信息(以及为什么您可能不希望在这种情况下使用命名空间),请查看the Rails routing guide