Rails 3.1基于子域从不同路径加载控制器

时间:2011-06-22 15:58:50

标签: ruby-on-rails subdomain ruby-on-rails-3.1

是否可以动态更改使用控制器的路径? Ryan Bates展示了如何更改view_paths:http://railscasts.com/episodes/269-template-inheritance

我正在制作CMS,用户可以在其中创建网站并输入自己的子网域。如果没有子域名,我希望“/”指向“public#welcome”,但如果有子域名,我希望它指向“sites / public#welcome”。

如果有任何不同,我正在使用Rails 3.1。

2 个答案:

答案 0 :(得分:1)

你应该能够使用约束来解决这种情况,如果我没有弄错的话(我可能,因为我还没有真正尝试过以下):

constraints(:subdomain => /.+/) do
  root :to => 'sites/public#welcome'
end

root :to => 'public#welcome'

答案 1 :(得分:1)

我明白了:

  constraints(:subdomain => /.+/) do
    scope :module => "sites" do
      root :to => 'public#welcome'
    end
  end

  root :to => 'public#welcome'

现在,当用户访问“/”时,如果子域存在,则将使用Sites :: PublicController,但如果没有子域退出,则只使用PublicController。添加scope :module => "sites" do...end会使我的路由文件变得简单易懂。