有没有办法在Rail的命名路由中指定默认子域?

时间:2012-04-26 20:57:53

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

我在我的Rails 3.2应用程序中使用子域名,其中request.subdomain是有意义的,用于填充帐户资源。

我期望命名路由的默认行为是,无论我在哪个子域,命名路由总是在主机名之前使用'www',除非我使用子域选项。

例如,如果我在http://www.example.com/path/to/something,则以下情况属实:

root_url                          # http://www.example.com/
root_url(subdomain: 'subdomain')  # http://subdomain.example.com/ 

尽管我不确切的是有意义的是,如果我在http://subdomain.example.com/path/to/something,则会出现以下情况:

root_url                          # http://subdomain.example.com/

这很好,但我的很多控制器重定向和查看帮助程序链接是针对我的子域约束之外的URL,省略了'www'和''。所以我真的不想在我的应用程序中使用new_session_url(子域名:'www'),thing_url(子域名:'www')等等。

如果没有传入子域选项,有没有办法让命名路由默认为'www',无论当前子域是什么?

1 个答案:

答案 0 :(得分:3)

使用以下内容包裹路线:

defaults :subdomain => '' do
     routes
end