【问题标题】:Admin namespace routes not found in production在生产中找不到管理命名空间路由
【发布时间】:2014-10-12 17:35:12
【问题描述】:

我的 routes.rb 中有以下内容:

devise_for :admins, path: ENV['ADMIN_PATH'] || '/', controllers: { registrations: 'admin/registrations' }
  constraints(SubdomainConstraints.new(subdomain: ENV['ADMIN_SUBDOMAIN'])) do
    namespace :admin, path: ENV['ADMIN_PATH'] do
      root to: 'dashboard#index', as: :dashboard
      resources :locations, except: :show do
        resources :services, except: [:show, :index]
      end

“ADMIN_PATH”变量设置为“admin”,因此“/admin”应该代表根。这在本地(开发中)可以正常工作,但在 heroku 上的生产中却不行。

ActionController::RoutingError (No route matches [GET] "/admin").

对于任何其他管理命名空间的路由,我都会遇到相同的错误,例如管理员/位置。

在本地和 heroku 上运行 rake 路线我得到了正确的:

admin_dashboard GET /admin(.:format) admin/dashboard#index

有东西干扰了路线,但我不知道从哪里开始。

【问题讨论】:

  • 如何在 Heroku 上设置 ENV 变量?在 Heroku 上设置和读取 ENV 变量似乎存在问题。运行$ heroku config:get ADMIN_PATH 以确认您的变量设置正确。
  • 是的,设置正确,我试过改成,还是不行:(

标签: ruby-on-rails heroku devise routes


【解决方案1】:

好的,无论出于何种原因,我完全没有考虑到子域约束。

constraints(SubdomainConstraints.new(subdomain: ENV['ADMIN_SUBDOMAIN']))

因此,对于 blah.herokaupp.com 的 heroku 子域和我的 ADMIN_SUBDOMAIN 变量未相应设置,它无法匹配约束。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 2018-05-05
    • 1970-01-01
    • 2011-09-05
    相关资源
    最近更新 更多