Пытаюсь выделить поддомен 'admin' в приложении. Командой
rails g controller Admin::Users
создал необходимый контроллер в пространстве имен Admin, получилось так:
class Admin::UsersController < Admin::ApplicationController
def index
@users = User.all
end
def show
@user = User.find(params[:id])
end
end
Сам Admin::ApplicationController представляет из себя следующее:
class Admin::ApplicationController < ActionController::Base
http_basic_authenticate_with name: "admin", password: "secret"
layout "admin/application"
end
В
config/routes.rb
прописал
TestApp::Application.routes.draw do
# ...
namespace :admin do
constraints subdomain: "admin" do
resources :users
end
end
#...
end
rake routes
выдает
admin_users GET /admin/users(.:format) admin/users#index {:subdomain=>"admin"}
POST /admin/users(.:format) admin/users#create {:subdomain=>"admin"}
new_admin_user GET /admin/users/new(.:format) admin/users#new {:subdomain=>"admin"}
edit_admin_user GET /admin/users/:id/edit(.:format) admin/users#edit {:subdomain=>"admin"}
admin_user GET /admin/users/:id(.:format) admin/users#show {:subdomain=>"admin"}
PATCH /admin/users/:id(.:format) admin/users#update {:subdomain=>"admin"}
PUT /admin/users/:id(.:format) admin/users#update {:subdomain=>"admin"}
DELETE /admin/users/:id(.:format) admin/users#destroy {:subdomain=>"admin"}
По URL
http://admin.lvh.me:3000/admin/users/
роутинг проходит нормально, но в таком случае 'admin' дублируется в пути. В попытках от этого избавить заменил
namespace :admin do
на
namespace :admin, path: '' do
В этом случае
rake routes
выдает, казалось бы, вменяемый результат.
admin_users GET /users(.:format) admin/users#index {:subdomain=>"admin"}
POST /users(.:format) admin/users#create {:subdomain=>"admin"}
new_admin_user GET /users/new(.:format) admin/users#new {:subdomain=>"admin"}
edit_admin_user GET /users/:id/edit(.:format) admin/users#edit {:subdomain=>"admin"}
admin_user GET /users/:id(.:format) admin/users#show {:subdomain=>"admin"}
PATCH /users/:id(.:format) admin/users#update {:subdomain=>"admin"}
PUT /users/:id(.:format) admin/users#update {:subdomain=>"admin"}
DELETE /users/:id(.:format) admin/users#destroy {:subdomain=>"admin"}
Вот только роутинг по URL вида
http://admin.lvh.me:3000/users/:id/[edit]
направляет запрос не в
Admin::Users
, а в
Users
.
Rails 4.0.2, Ruby 2.0.0p643