ruby-on-rails - 定制设计注册
问题描述
我正在尝试使用设计身份验证创建应用程序,但我想使用 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 提出请求,我只传递了一个带有姓名、电子邮件、密码和密码确认的 json。这是我 失眠的反应
解决方案
这是因为您为用户注册创建了自定义路径,但devise
在调用时仍使用默认控制器继承,super
在某些内部函数中使用默认路由助手。
修复它的最简单方法 - 使用设计而不是创建自己的路线
删除那个
devise_scope :user do
post 'sign_up', to: 'users/registrations#create'
end
并改变devise_for
devise_for :users, controllers: {
registrations: 'users/registrations'
}
推荐阅读
- python - Python在列表中运行多个参数
- javascript - 每当它的任何可聚焦子元素失去焦点时,都会触发角度 8 中 div 元素的 focusout 事件
- java - 如何从静态 xml 文件打印请求和响应
- javascript - jest-Puppeteer 没有看到在 moduleNameMapper 中定义的别名路径
- php - 联系表格 7 提交后无法执行脚本
- arrays - 来自 Azure DevOps Api 的 Powershell Json 数组内容
- cloud-foundry - 尝试从 PCF 访问本地托管的 oracle 数据库服务器时出现 UnknownHostException
- c# - 如果使用这个令人困惑的函数(ListOfTabs.FirstOrDefault(e.Target.Location.OriginalString.Contains)),我该如何简化
- javascript - 在两个js python之间切换对象
- elasticsearch - 如何过滤弹性搜索中的以下查询?