[英]Devise sign up not working on Ruby on rails
我正在開發一個 Rails 應用程序。 我使用設計進行身份驗證。 我向用戶添加了姓名、姓氏、電話、學校數字變量。 當按下注冊按鈕時,沒有任何反應,只是刷新頁面。 但是登錄按鈕正在工作。 問題是什么?
注冊/new.html.erb
<div class="login-dark">
<form method="post">
<div class="illustration"><%= image_tag('paulogo.png') %></div>
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= render "devise/shared/error_messages", resource: resource %>
<div class="field form-group">
<%= f.text_field :name, autofocus: true, autocomplete: "name", placeholder:"Name", class:"form-control" %>
</div>
<div class="field form-group">
<%= f.text_field :surname, autofocus: true, autocomplete: "surname", placeholder:"Surname", class:"form-control" %>
</div>
<div class="field form-group">
<%= f.number_field :phone, autofocus: true, autocomplete: "phone", placeholder:"Phone Number", class:"form-control" %>
</div>
<div class="field form-group">
<%= f.number_field :schoolNumber, autofocus: true, autocomplete: "school number", placeholder:"School Number", class:"form-control"%>
</div>
<div class="field form-group">
<%= f.email_field :email, autofocus: true, autocomplete: "email", placeholder:"Email", class:"form-control" %>
</div>
<div class="field form-group">
<% if @minimum_password_length %>
<%= f.password_field :password, autocomplete: "off", placeholder:"Password (Min ".concat(@minimum_password_length.to_s)+ " Characters)", class:"form-control"%>
<% end %>
</div>
<div class="field form-group">
<%= f.password_field :password_confirmation, autocomplete: "off", placeholder:"Password Confirmation", class:"form-control" %>
</div>
<div class="actions form-group">
<%= f.submit "Sign up", class:"btn btn-primary btn-block"%>
</div><div class="center_div">
<%= render "devise/shared/links" %>
</div>
<% end %>
</form>
</div>
application_controller.rb
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
devise_parameter_sanitizer.permit(:account_update, keys: [:name])
devise_parameter_sanitizer.permit(:sign_up, keys: [:surname])
devise_parameter_sanitizer.permit(:account_update, keys: [:surname])
devise_parameter_sanitizer.permit(:sign_up, keys: [:phone])
devise_parameter_sanitizer.permit(:account_update, keys: [:phone])
devise_parameter_sanitizer.permit(:sign_up, keys: [:schoolNumber])
devise_parameter_sanitizer.permit(:account_update, keys: [:schoolNumber])
end
end
用戶.rb
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
end
和 db/migrate/AddDetailsToUser.rb
class AddDetailsToUsers < ActiveRecord::Migration[7.0]
def change
add_column :users, :name, :string
add_column :users, :surname, :string
add_column :users, :phone, :integer
add_column :users, :schoolNumber, :integer
end
end
如果您檢查服務器日志,您可能會看到設計抱怨未經許可的參數。 您需要一次允許所有必需的密鑰。
devise_parameter_sanitizer.permit(:sign_up, keys: [:name, :phone, :schoolNumber, :surname, :email, :password, :password_confirmation])
我解決了問題
路線.rb
Rails.application.routes.draw do
# Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html
devise_for :users
devise_scope :user do
get '/users/sign_out' => 'devise/sessions#destroy'
post '/users/sign_up' => 'devise/registrations#create'
end
# Defines the root path route ("/")
# root "articles#index"
resources :users, only: [:show]
root to: "pages#home"
get '/about', to: 'pages#about'
get '/contact', to: 'pages#contact'
end
我創建了文件views/user/show.html.erb
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.