разработать переопределенный контроллер регистрации - неинициализированная константа Users :: RegistrationsController - PullRequest
14 голосов
/ 11 декабря 2011

Я пытаюсь переопределить некоторые функции контроллера регистрации devise по умолчанию, чтобы только одни пользователи могли создавать учетные записи для других. Таким образом, в файле registrations_controller.rb в папке controllers / users у меня есть следующее

class Users::RegistrationsController < Devise::RegistrationsController

  before_filter :check_permissions, :only => [:new, :create, :cancel]
  skip_before_filter :require_no_authentication

  def check_permissions
    authorize! :create, resource
  end
end

и в моем файле маршрутов у меня есть

devise_for: users,: controllers => {: registrations => 'users / registrations'}

Когда я пытаюсь перейти к URL-адресу users / sign_up, я получаю ошибку маршрутизации «неинициализированная константа Users :: RegistrationsController».

Итак, что меня по-настоящему удивляет, так это то, что я использовал практически ту же самую функциональность в приложении rails 3 без проблем. Я взглянул на некоторые другие вопросы стека потока, похожие на этот, и я до сих пор не мудрый. Приложение, которое я создаю сейчас, является приложением rails 3.1, и я использую devise 1.5.1

Вот соответствующие маршруты, если они полезны

new_user_session GET    /users/sign_in(.:format)                                      {:action=>"new", :controller=>"devise/sessions"}
                         user_session POST   /users/sign_in(.:format)                                    {:action=>"create", :controller=>"devise/sessions"}
                 destroy_user_session DELETE /users/sign_out(.:format)                                   {:action=>"destroy", :controller=>"devise/sessions"}
                        user_password POST   /users/password(.:format)                                   {:action=>"create", :controller=>"devise/passwords"}
                    new_user_password GET    /users/password/new(.:format)                               {:action=>"new", :controller=>"devise/passwords"}
                   edit_user_password GET    /users/password/edit(.:format)                              {:action=>"edit", :controller=>"devise/passwords"}
                                      PUT    /users/password(.:format)                                   {:action=>"update", :controller=>"devise/passwords"}
             cancel_user_registration GET    /users/cancel(.:format)                                     {:action=>"cancel", :controller=>"users/registrations"}
                    user_registration POST   /users(.:format)                                            {:action=>"create", :controller=>"users/registrations"}
                new_user_registration GET    /users/sign_up(.:format)                                    {:action=>"new", :controller=>"users/registrations"}
               edit_user_registration GET    /users/edit(.:format)                                       {:action=>"edit", :controller=>"users/registrations"}
                                      PUT    /users(.:format)                                            {:action=>"update", :controller=>"users/registrations"}
                                      DELETE /users(.:format)                                            {:action=>"destroy", :controller=>"users/registrations"}

Ответы [ 6 ]

15 голосов
/ 17 апреля 2013

Я бы сказал, что в вашем имени файла что-то не так.

Ваш файл должен называться users/registrations_controller.rb

Это работает для меня.

3 голосов
/ 05 июля 2014

Где был сохранен ваш registrations_controller.rb? Местоположение важно. Я обнаружил, что сделал ошибку, сохранив ее в app/controllers/devise/.. Его просто нужно было сохранить в app/controllers/., например ::1004*

app/controllers/registrations_controller.rb


Кроме того, config/routes.rb маршрут должен быть определен как:

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

2 голосов
/ 13 декабря 2011

Я попробовал ту же настройку, что вы поставили здесь, но у меня это сработало. Я загрузил приложение в github (я также загрузил журнал, чтобы вы могли убедиться, что он действительно работает).

Двойная проверка на возможные опечатки. Возможно, вы забыли множественное число или в названии класса есть опечатка.

0 голосов
/ 30 апреля 2018

Выполните rails routes и проверьте свои маршруты в config/routes, возможно, в ваших маршрутах есть опечатка.

Вместо registrationS#new у вас может быть что-то еще, например registration#new.

0 голосов
/ 21 августа 2017

Если вы были сгенерированы представления Переместить файлы просмотра

Я предполагаю, что вы уже используете рельсы для генерации devise: представления генерируют devise views. Переместить папку views / devise / registrations в views / users Я думаю, что вы также должны изменить _path в формах

0 голосов
/ 04 ноября 2014

Привет, я только недавно добавил имя и фамилию в мою регистрацию.Я использую Rails 4.

Я использовал следующие инструкции / учебник, чтобы сделать это:

http://www.jacopretorius.net/2014/03/adding-custom-fields-to-your-devise-user-model-in-rails-4.html.

:)

...