--Erstellen Sie einen Sitzungscontroller
MacBook % rails g controller Sessions new
config/routes
Rails.application.routes.draw do
get '/login', to: 'sessions#new'
post '/login', to: 'sessions#create'
delete '/logout', to: 'sessions#destroy'
~
--Nächste erstellen Sie ein Anmeldeformular. Diesmal ist es ein direktes Schreiben ohne Verwendung von Bootstrap usw.
app/views/sessions/new.html.erb
<body>
<h1>Login</h1>
<%= form_for(:session, url: login_path) do |f| %>
<div class="input-name">
<%= f.label :password, 'Raumname' %>
<%= f.text_field :name, placeholder: "Bitte geben Sie den Namen des Zimmers ein" %>
</div>
<div class="form-group">
<%= f.label :password, 'Passwort' %>
<%= f.password_field :password, placeholder: 'Bitte geben Sie Ihr Passwort ein' %>
<%= f.submit 'Einloggen' %>
</div>
<% end %>
</body>
--Erstellen Sie ein Formular und greifen Sie auf http: // localhost: 3000 / login zu, um dies zu überprüfen
app/controllers/sessions_controller.rb
class SessionsController < ApplicationController
def new
end
def create
room = Room.find_by(name: params[:session][:name])
if room && room.authenticate(params[:session][:password])
else
end
end
def destroy
end
end
--Schreiben Sie die Verarbeitung, wenn die Anmeldung der Erstellungsaktion fehlschlägt. (Bootstrap etc. werden nicht verwendet)
app/controllers/sessions_controller.rb
~
def create
room = Room.find_by(name: params[:session][:name])
if room && room.authenticate(params[:session][:password])
else
flash[:alert] = 'Der Name oder das Passwort ist falsch'
redirect_to '/login'
end
end
~
app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
include SessionsHelper
end
app/helpers/sessions_helper.rb
module SessionsHelper
#Speichern Sie die verschlüsselte roomID in temporären Cookies im Browser
def log_in(room)
session[:room_id] = room.id
end
end
/app/controllers/sessions_controller.rb
~
def create
room = Room.find_by(name: params[:session][:name])
if room && room.authenticate(params[:session][:password])
log_in room
redirect_to receptions_path
else
flash[:alert] = 'Der Name oder das Passwort ist falsch'
redirect_to '/login'
end
end
~
(https://qiita.com/yongjugithub/items/dbb880f085f99cc9af93)
Recommended Posts