0

我已经在 Rails 中的子域上挖掘了几天,但还没有找到一个很好的解释......

我有一个集成了博客的 Rails 应用程序,我想将该博客放在子域中。IE。blog.myapp.com.

现在,在博客中,我希望用户能够查看帖子,blog.myapp.com/posts/123. 但是,如果用户要单击站点上的任何其他资源,videos例如,我希望它们被重定向回根目录,即。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'

但是,这似乎效果不佳,我特别难以在链接之间进行重定向以非常一致地工作。

我很确定其他人过去一定遇到过这个问题,但我似乎找不到书面这种情况的好例子。处理这个问题的最佳方法是什么?

4

1 回答 1

3

hereherehere的帮助下......我终于想通了:

constraints :subdomain => 'blog' do
    scope '', :subdomain => 'blog' do
        resources :posts
    end
    root :to => 'posts#index'
end

这会导致posts_path帮助程序正确地将访问者发送到子域。

于 2012-05-16T02:07:42.393 回答