Индивидуальная регистрация устройства - PullRequest
0 голосов
/ 13 июля 2020

Я пытаюсь создать приложение с devise auth, но я хочу использовать Inertia + VueJS вместо представлений Rails. Мне сложно выполнить эту работу, пока я создал настраиваемые контроллеры, используя rails generate devise:controllers users

Контроллер регистрации

class Users::RegistrationsController < Devise::RegistrationsController
  before_action :configure_sign_up_params, only: [:create]
  layout false

  # POST /resource
  def create
    super
  end

  protected

  # If you have extra params to permit, append them to the sanitizer.
  def configure_sign_up_params
    devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
  end
end

Файл маршрутов

Rails.application.routes.draw do
  devise_for :users, skip: :registrations
  devise_scope :user do
    post 'sign_up', to: 'users/registrations#create'
  end
  root 'home#index'
end

Контроллер приложений

class ApplicationController < ActionController::Base
    before_action :authenticate_user!
    protect_from_forgery prepend: true
end

Ruby версия: '2.6.5', версия Rails: '6.0.3.2'

Я использую Insomnia для выполнения запросов, i Передаю просто json с именем, адресом электронной почты, паролем и подтверждением пароля. Это мой ответ Ответ бессонницы

1 Ответ

0 голосов
/ 14 июля 2020

Это связано с тем, что вы создаете собственный путь для регистрации пользователя, но по-прежнему используете devise наследование контроллера при вызове super, которые используют помощник маршрутов по умолчанию в некоторых внутренних функциях.

Самый простой способ исправить это - используйте devise вместо создания собственных маршрутов

Удалите это

  devise_scope :user do
    post 'sign_up', to: 'users/registrations#create'
  end

и измените devise_for

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