Obwohl die Anmeldefunktion bis zum letzten Mal verfügbar war, bleibt ein Fehler bestehen, dass nicht bekannt ist, welcher Benutzer im aktuellen Status angemeldet ist, und auf die Listenseite zugegriffen werden kann, ohne sich anzumelden. Komm damit klar
--current_room Methode. Fügen Sie eine Hilfsmethode hinzu, um den aktuell angemeldeten Benutzer anzuzeigen
app/helpers/sessions_helper.rb
#Wenn ein angemeldeter Benutzer vorhanden ist, ersetzen Sie den Benutzer
def current_room
if session[:room_id]
@current_room ||= Room.find_by(id: session[:room_id])
end
end
app/helpers/sessions_helper.rb
#Stellen Sie fest, ob Sie angemeldet sind
def logged_in?
!current_room.nil?
end
--Schreiben Sie die Abmeldemethode an zwei Stellen.
app/helpers/sessions_helper.rb
def log_out
session.delete(:room_id)
@current_room = nil
end
app/controllers/sessions_controller.rb
def destroy
log_out
redirect_to login_path
end
Anmeldegesteuerte Seite
~
<div class="header-title">
<div class="header-title">Empfangsliste:
<%= current_room.name %>
<%= link_to "Logout", logout_path, method: :delete %>
</div>
</div>
~
app/controllers/receptions_controller.rb
class ReceptionsController < ApplicationController
before_action :logged_in_room, only: [:index]
~
private
def logged_in_room
unless logged_in?
flash[:alert] = "Login ist erforderlich"
redirect_to login_path
end
end
~
Recommended Posts