想知道为什么我的路由不能与rails指南中描述的一起工作。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
由于您的路由在名称空间内,因此将您带到admin::pages#home
的正确页面将是http://admin.foo.dev:3000/admin/
。删除命名空间以正确连接。
一般来说,如果你对生成的路由以及如何到达它们感到困惑,请使用rake routes
。有关名称空间路由的更多信息(以及为什么在这种情况下不希望使用名称空间),请查看Rails路由指南。