Implementieren Sie die Anmeldefunktion mit gem'devise ' Ändern Sie die Anmeldung für Name und Kennwort anstelle der Anmeldung für Kennwort und E-Mail.
Gemfile
#Unten hinzugefügt
gem 'devise'
Führen Sie den Befehl unter dem Terminal aus, nachdem Sie die Gem-Datei bearbeitet haben
Terminal
bundle install
rails g devise:install
rails g devise User
rails db:migrate
Dieses Mal habe ich mich jedoch entschieden, mich mit Namen anzumelden. Bearbeiten Sie daher die Migrationsdatei, bevor Rails db: migrate.
db/migrate
#t.timestamps null:Fügen Sie oben false hinzu
t.string :name
Terminal
rails g devise:view
Übrigens ist in der erstellten Datei die Registrierung eine neue Registrierung und die Sitzung eine Datei, die sich auf die Anmeldung bezieht.
:app/views/devise/sessions/new.html.erb
<h2>Log in</h2>
<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name, autofocus: true, autocomplete: "name" %>
</div>
(Ausgelassen, da sich danach nichts mehr ändert)
<% end %>
<%= render "devise/shared/links" %>
Ändern Sie E-Mail in Name und E-Mail-Feld in Textfeld
:app/views/devise/registrations/new.html.erb
#Über dem E-Mail-Div-Tag hinzugefügt
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name, autofocus: true, autocomplete: "name" %>
</div>
app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
before_action :configure_premitted_parameters, if: :devise_controller?
protected
def configure_premitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:name, :email])
devise_parameter_sanitizer.permit(:sign_in, keys: [:name])
end
end
Fast fertig damit
Terminal
rails g controller home top
:app/views/home/top.html.erb
<h1>Home#top</h1>
<%= link_to "Ausloggen", destroy_user_session_path, method: :delete %>
Ich möchte mich abmelden können, daher verwende ich die link_to-Methode, um eine Abmeldeschaltfläche zu erstellen. Fügen Sie application_controller.rb Folgendes hinzu
app/controllers/application_controller.rb
#Fügen Sie oben auf geschützt hinzu
def after_sign_in_path_for(resource)
home_top_path
end
cinfig/initializers/devise.rb
#Kommentieren Sie Folgendes um Zeile 49 aus
config.authentication_keys = [:email]
#Ändern Sie die obige E-Mail in Namen
config.authentication_keys = [:name]
Beachten Sie, dass Sie sich ohne diesen Namen nicht anmelden können!
das ist alles.
Recommended Posts