我的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").
我为任何其他管理员命名空间路由收到相同的错误,例如admin / locations。
在本地和heroku上运行rake路由我得到了正确的:
admin_dashboard GET /admin(.:format) admin/dashboard#index
干扰路线的东西,但我不知道从哪里开始寻找。
答案 0 :(得分:0)
好的,无论出于何种原因,我完全没有考虑到子域约束。
constraints(SubdomainConstraints.new(subdomain: ENV['ADMIN_SUBDOMAIN']))
因此使用了blah.herokaupp.com&的heroku子域。我的ADMIN_SUBDOMAIN变量未相应设置,因此无法匹配约束。