Правильный способ Rails сделать это - использовать Namespaces
.Я приведу пример ниже:
Внутри вашей папки controllers
вы добавляете новую папку с именем admin
, и для каждой модели, которую вы хотите редактировать в качестве администратора, добавьте контроллер.Вот основное приложение блога:
app/
models/
views/
controllers/
users_controller.rb
posts_controller.rb
comments_controller.rb
admin/
users_controller.rb
posts_controller.rb
comments_controller.rb
Обратите внимание на новый слой папок в нашей папке controller
.Внутри каждого из этих файлов вы измените определение класса с:
class UsersController < ApplicationController
на:
class Admin::UsersController < ApplicationController
Теперь в вашем файле congif/routes.rb
вы можете использовать пространство именваши маршруты к пространству имен администратора, например:
map.namespace :admin do |admin|
admin.resources :users
admin.resources :posts
admin.resources :comments
end
Теперь вы можете перейти по URL-адресу, например: http://localhost:3000/admin/users/1
, и у вас будет доступ ко всему, что вы указали в версии администратора ваших пользователейcontroller.
Вы можете прочитать больше в этом вопросе StackOverflow и прочитать о маршрутах здесь .