【问题标题】:Rails 3.1 load controller from different path based on subdomainRails 3.1 根据子域从不同路径加载控制器
【发布时间】:2011-06-24 04:13:15
【问题描述】:

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

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

如果这有什么不同的话,我正在使用 Rails 3.1。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 我将如何添加资源...比如帖子资源? /posts 和 /sites/posts 哪里会有 crud 操作??
    • 他们会使用不同的控制器吗?
    【解决方案2】:

    我想通了:

      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 使我的路由文件简单且易于管理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-22
      • 2012-04-14
      • 1970-01-01
      • 1970-01-01
      • 2016-11-18
      相关资源
      最近更新 更多