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