【问题标题】:Rails 3 - Subdomain Issue Moving to HerokuRails 3 - 转移到 Heroku 的子域问题
【发布时间】:2011-06-03 17:00:20
【问题描述】:

我编写了一个应用程序,它使用每个用户帐户的子域来隔离环境。所有这一切都很好,除了我有一个问题。我不能同时让 www 和 "" 拥有与所有其他子域不同的根路径。

对于所有帐户子域,我有一个根页面:

root :to => "applications#index"

我需要将此作为所有子域的根页面,除了“”的空白子域,然后是“www”。对于 www,我在路线上有这个:

constraints(:subdomain => "www") do
    root :to => "promos#index"
  end

我正在努力解决的问题是,“”也将使用 promos#index 作为根路径。当它不是根路径时,mywebsite.com 会将它们发送到应用程序#index,这需要登录。我不希望用户在第一次访问时看到的东西。

无论如何修改此代码以包含 mywebsite.com 以具有不同的根?我尝试过使用“”复制代码之类的方法,但这往往会弄乱所有其他子域,无论顺序如何。以下是我的路线文件:

constraints(:subdomain => "www") do
    root :to => "promos#index"
  end  

  root :to => "applications#index"

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 heroku


    【解决方案1】:

    您可以使用实现“匹配?”的对象做一些真正的定制的东西。如果您是客户子域,我们将在下面设置 applications#index,如果您不是,则将您发送到 promo#index

    在您的路线中:

    Yourapp::Application.routes.draw do
      constraints(SubDomain) do
        root :to => "applications#index"
      end
      root :to => "promo#index"
      ...
    end
    

    然后是子域匹配文件:

    config/initializers/subdomain.rb

    class SubDomain
      def self.matches?(request)
        case request.subdomain
        when 'www', '', nil, #admin/api/etc could also go here
          false
        else
          true
        end
      end
    end
    

    subdomain.rb 也可以存在于 lib 中(如果它被自动加载)

    【讨论】:

    • 那是惊人的优雅,就像一个绝对的魅力。如果我能拥抱和亲吻你,我会:P - 说真的,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-12
    • 2021-10-27
    • 2020-01-06
    • 1970-01-01
    相关资源
    最近更新 更多