Ответ 1
Я бы сказал, что-то не так в вашем имени файла.
Ваш файл должен называться users/registrations_controller.rb
Это подходит для меня.
Я пытаюсь переопределить некоторые функции контроллера регистрации для разработки по умолчанию, чтобы только определенные пользователи могли создавать учетные записи для других. Итак, в файле registrations_controller.rb под папкой контроллеров/пользователей у меня есть следующий
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,: controllerlers = > {: registrations = > 'users/registrations'}
Когда я пытаюсь перейти к URL-адресу users/sign_up, я получаю ошибку маршрутизации "uninitialized constant Users:: RegistrationsController".
Итак, что действительно меня отличает от этого, так это то, что я использовал практически такую же функциональность в приложении rails 3 без проблем. Я посмотрел на некоторые из других вопросов stackoveflow, подобных этому, и я до сих пор не стал более мудрым. Приложение, которое я сейчас создаю, представляет собой приложение 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"}
Я бы сказал, что-то не так в вашем имени файла.
Ваш файл должен называться users/registrations_controller.rb
Это подходит для меня.
Где был сохранен ваш registrations_controller.rb
? Место очень важно. Я обнаружил, что сделал ошибку, сохранив ее до app/controllers/devise/.
. Его просто нужно было сохранить в app/controllers/.
например:
app/controllers/registrations_controller.rb
Кроме того, маршрут config/routes.rb
должен быть определен как:
devise_for :users, controllers: { registrations: 'registrations' }
Я попробовал ту же настройку, что и вы здесь, но это сработало для меня. Я загрузил приложение в github (я также загрузил журнал, чтобы вы могли видеть, что он действительно работает).
Двойная проверка возможных опечаток. Возможно, вы забыли множественное число, или есть опечатка имени класса.
Привет, я недавно добавил к моей регистрации имя и фамилию. Я использую Rails 4.
Я использовал следующие инструкции/учебник, чтобы это сделать:
http://www.jacopretorius.net/2014/03/adding-custom-fields-to-your-devise-user-model-in-rails-4.html.
:)
Если вы создавали представления Переместить файлы вида
Я предполагаю, что вы уже используете rails generate devise: views генерирует созданные представления. Перемещение представлений/создание/регистрация папки для просмотров/пользователей , Я думаю, вы также должны изменить _path в формах
Делайте rails routes
и проверяйте ваши маршруты в config/routes
вас может быть опечатка в ваших маршрутах
Вместо registrationS#new
вас может быть что-то вроде registration#new
.