我已经在Rails的子域中挖掘了几天,但还没有找到一个很好的解释......
我有一个rails应用程序,其中集成了一个博客,我想将该博客放在子域名中。 IE浏览器。 blog.myapp.com
。
现在,在博客中,我希望用户能够查看帖子blog.myapp.com/posts/123
。但是,如果用户要点击网站上的任何其他资源,例如说videos
,我希望将它们重定向回root,即。 www.myapp.com/videos/123
。我不希望blog.myapp.com/videos...
导致路由错误,我只是想让它重定向。
基本上,我正在寻找设置子域的最简单方法,并指定某些控制器使用该子域而其他控制器不使用。理想情况下,我甚至喜欢控制器层以两种方式处理重定向,因此在视图中我可以使用post_path(123)
和video_path(123)
这样的帮助器来回链接,并且子域将自动使用或者不根据哪个控制器为视图提供服务而使用。
我尝试将所有控制器放在约束块中,即:
constraints :subdomain => 'www' do
resources :sessions
resources :users
resources :videos
root :to => 'home#show'
end
constraints :subdomain => 'nexturb' do
resources :posts
root :to => "posts#index"
end
root :to => 'home#show'
然而,这似乎不能很好地工作,我特别难以让链接之间的重定向非常一致。
我很确定其他人过去一定会遇到这个问题,但我似乎无法在写作中找到这种情况的好例子。处理这个问题的最佳方法是什么?