基于用户的自定义子域

时间:2017-10-08 14:26:45

标签: ruby-on-rails

我试图研究并弄清楚人们在没有取得多大成功的情况下如何做到这一点。

对于我的rails项目,我有项目,每个项目都有自己的slug。用户可以自己决定slug,slug将成为子域。

现在,我正试图弄清楚如何顺利完成这种路由,并使其在生产中也能正常工作。

我现在有这个:

get '/', to: 'posts#index', constraints: { subdomain: /.+/, via: [:get] }, as: :feed

在控制器级别,我做:

before_action :get_project, only: :index
...
def get_project
  unless @project ||= Project.find_by_slug(request.subdomain)
    redirect_to root_url
  end
end

当我使用lvh.me在localhost上测试时,它可以工作。但是,当我尝试在实时生产服务器上执行此操作并检查服务器日志时,Rails会返回:

ActionController::RoutingError (No route matches [OPTIONS] "/"):

有没有人有这方面的经验?

1 个答案:

答案 0 :(得分:0)

至于为什么您当前的代码在生产中不起作用,如果我们要帮助您调试它,您需要向我们提供您的Web服务器配置,因为这可能是它们之间的主要区别这两个环境。特别是如果您的应用程序是在反向代理后面提供的但您可以使用此gem来解决此问题。它们的实现涵盖了几种情况,简化了您尝试实现的目标,并可能最终在生产中工作。它允许以多种方式映射子域路由,真正节省了大量时间。您可能真正感兴趣的是this section,其中讨论了使用活动记录映射路由。