Создать корень и маршруты для объекта Devise - PullRequest
0 голосов
/ 01 февраля 2019

Я создал модель Admin с жемчужиной Devise.Используя генератор контроллеров Devise, у меня теперь есть папка app/controllers/admins, содержащая все стандартные контроллеры, которые я могу изменить, например, sessions_controller, passwords_controller и т. Д.

Однако я могу 'не могу понять, как получить Admin контроллер и простые admin маршруты, такие как admin_path или new_admin_path.

Вот мой rake routes | grep admin

               new_admin_session GET      /admin/sign_in(.:format)                                                                 admins/sessions#new
                   admin_session POST     /admin/sign_in(.:format)                                                                 admins/sessions#create
           destroy_admin_session DELETE   /admin/sign_out(.:format)                                                                admins/sessions#destroy
              new_admin_password GET      /admin/password/new(.:format)                                                            devise/passwords#new
             edit_admin_password GET      /admin/password/edit(.:format)                                                           devise/passwords#edit
                  admin_password PATCH    /admin/password(.:format)                                                                devise/passwords#update
                                 PUT      /admin/password(.:format)                                                                devise/passwords#update
                                 POST     /admin/password(.:format)                                                                devise/passwords#create
                      admin_root GET      /admin(.:format)                                                                         admins/sessions#portal
                  admin_sign_out GET      /admin/sign_out(.:format)                                                                admin/sessions#destroy

А вотсоответствующие части моего routes.rb

  devise_for :admins, path: 'admin', controllers: { sessions: 'admins/sessions' }

  devise_scope :admin do
    get "/admin", to: 'admins/sessions#portal', as: 'admin_root'
    get "/admin/sign_out", to: 'admin/sessions#destroy', as: 'admin_sign_out'
  end

Вы увидите, что в настоящее время у меня есть portal метод в моем Admin::SessionsController, который является моим текущим обходным решением.Я знаю, что правильное место для этой страницы находится в AdminsController, но я не могу понять, как его настроить.

Добавление admins: 'admins/admins' в блок devise_for :admins, controllers: не дает мне ничего новогомаршруты.Я попытался добавить AdminsController с методами, но это тоже не помогает, пытаясь перейти к /admin/new или /admins/new, где не найдено ни одного маршрута.

1 Ответ

0 голосов
/ 14 апреля 2019

Вот так я настроил свое устройство и пространства имен

# config/routes.rb
Rails.application.routes.draw do

  devise_for :admins, :controllers => { registrations:  'admins/registrations',
                                        sessions:       'admins/sessions',
                                        passwords:      'admins/passwords',
                                        confirmations:  'admins/confirmations'
  }
  authenticate :admin do
    namespace :admins do
      ...
      root 'dashboards#index'
    end
  end
  ...
  root 'pages#index'

Теперь важны и контроллеры.

#app/controllers/admin_controller.rb
class AdminController < ApplicationController
  layout 'admins/application'
  before_filter :authenticate_admin!
end

Контроллеры Devise, которые я им установил, установлены следующим образом

#app/controllers/admins/sessions_controller.rb
class Admins::SessionsController < Devise::SessionsController
  layout 'admins/application'
  ...
end

Повторите этот процесс для всех остальных контроллеров вашего устройства

Дайте мне знать, если это поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...