2016-08-05 3 views
0

На самом деле, я использую две модели для своего приложения, которые являются пользователем и администратором, и я следил за каждым шагом, который нужно выполнить при использовании драгоценного камня.Ошибка маршрутизации с несколькими моделями - devise rails

И я хотел бы иметь несколько sign_up. Когда пользователь sign_up должен быть перенаправлен на страницу User sign_up и когда Admin sign_up, необходимо перенаправить на страницу Admin sign_up, чтобы сделать регистрацию.

Когда я выполняю ссылку sign_up под пользователем, он дает мне ошибку маршрутизации, которая приведена ниже;

И когда я выполняю ссылку sign_up под Администратором, она дает мне ошибку маршрутизации, которая приведена ниже;

Routing Error 
uninitialized constant Admins::RegistrationsController 

routes.rb

Rails.application.routes.draw do 

    root "home#index" 

    devise_for :users, controllers: { 
     sessions: 'users/sessions', 
     registrations: 'users/registrations' 
    } 

    get '/aslani' => 'aslani#index', as: :authenticated_user_root 

    devise_for :admins, controllers: { 
     sessions: 'admins/sessions', 
     registrations: 'admins/registrations' 
    } 


    get '/kola' => 'kola#index', as: :authenticated_admin_root 
end 

Аслани/index.html.erb

<% if user_signed_in? %> 
     I am Aslani. 
     <%= link_to 'Log out', destroy_user_session_path, method: :delete %> 
    <% else %> 
     <%= link_to 'Log In', new_user_session_path %> 
     <%= link_to 'Sign Up', new_user_registration_path %> 
<% end %> 

Kola/index.html.erb

<% if admin_signed_in? %> 
     I am Kola. 
     <%= link_to 'Log out', destroy_admin_session_path, method: :delete %> 
    <% else %> 
     <%= link_to 'Log In', new_admin_session_path %></li> 
     <%= link_to 'Sign Up', new_admin_registration_path %> 
<% end %> 

приложение/контроллеры/пользователей /sessions_controller.rb

class Users::SessionsController < Devise::SessionsController 
    def new 
     super 
    end 

    def create 
     self.resource = warden.authenticate!(auth_options) 
     sign_in(resource_name, resource) 
     yield resource if block_given? 
     respond_with resource, location: after_sign_in_path_for(resource) 
    end 

end 

приложение/контроллеры/админов/sessions_controller.rb

class Admins::SessionsController < Devise::SessionsController 
    def new 
     super 
    end 

    def create 
     self.resource = warden.authenticate!(auth_options) 
     sign_in(resource_name, resource) 
     yield resource if block_given? 
     respond_with resource, location: after_sign_in_path_for(resource) 
    end 

end 

приложение/контроллеры/пользователи/registrations_controller.rb

class Users::RegistrationsController < Devise::RegistrationsController 
    def new 
    super 
    end 

    def create 
     super 
    end 

    def update 
    super 
    end 
end 

приложение/контроллеры/админов/registrations_controller.rb

class Admins::RegistrationsController < Devise::RegistrationsController 
    def new 
    super 
    end 

    def create 
     super 
    end 

    def update 
    super 
    end 
end 

Любые предложения приветствуются.

Заранее спасибо.

+0

ли вам Кроме того, у вас есть overrideen registrationscontroller? –

+0

Спасибо за ответ. Да, у меня есть переопределенные registrations_controllers для пользователя и администратора. –

+0

Проблемы с ошибкой маршрутизации решены, но я получаю Отсутствующие пользователи шаблонов/регистрации/создания и пропуски шаблонов админов/регистрации/создания ошибок. Просто посмотрите, что я обновил свой пост. –

ответ

1

За обсуждение с @Muhammad

Он получает отсутствующую администрацию шаблона/регистрацию/создание ошибки, Чтобы решить эту проблему, либо добавить супер или удалять не создавать действие, потому что он переопределен ничего

class Users::RegistrationsController < Devise::RegistrationsController 
    def new 
    super 
    end 

    def create 
    super 
    end 

    def update 
    super 
    end 
end 
Смежные вопросы