2017-09-07 2 views
0

Wie leite ich mit Rails 5 einen Benutzer um, wenn er meine Anmeldeseite (/ login) aufruft und sie bereits angemeldet sind? Ich probierteWie kann ich umleiten, wenn ein Benutzer die Anmeldeseite besucht, aber bereits angemeldet ist?

class PagesController < ApplicationController 
    ... 
    def login 
    respond_to do |format| 
     if logged_in? 
     format.html { redirect_to :controller => "my_controller", :action => "index" } 
     end 
    end 
    end 

in denen "logged_in?" ist in meiner application_controller.rb-Datei definiert, aber ich den Fehler bekommen

ActionController::UnknownFormat 

auf der Linie

respond_to do |format| 

Scheint, wie es ist wahrscheinlich eine wirklich einfache Möglichkeit, dies zu tun, dass ich nicht zu realisieren bin . Ich benutze auch kein Gerät, benutze nur meine eigenen Login-Mechanismen.

Antwort

1

Sie benötigen ein Format für den Fall, fügen Sie den Benutzer nicht angemeldet ist, eigentlich bist du nur umleiten, wenn der Benutzer ist, versuchen Sie mit:

def login 
    respond_to do |format| 
    if logged_in? 
     format.html { redirect_to controller: 'my_controller', action: 'index' } 
    else 
     format.html { ... } # redirect to another place 
    end 
    end 
end 

Ich denke, Sie eine Methode erstellen könnte umleiten nur wenn der Benutzer nicht eingeloggt ist, sonst lass es da, ich denke jetzt bekomme ich deine Idee. Es könnte in der Anwendung Controller sein, und auf jedem Controller angewendet werden, wie zB:

before_action :require_login 

private 

def require_login 
    redirect_to some_path unless logged_in? 
end 

Und wenn Sie einige Aktionen in einigen Controllern ermöglichen möchten, ohne angemeldet zugegriffen werden wird, dann können Sie einen skip_before_action Rückruf verwenden , wie:

skip_before_action :require_login, only: :index # for instance 
+0

Danke. Gibt es einen einfacheren Weg, dies zu tun als das, was ich eingerichtet habe? Dies scheint so zu sein, als könnte ich es über eine Route configuraon anstatt über all diesen Code tun. –

+0

Ich habe die Antwort aktualisiert, werfen Sie einen Blick. –

Verwandte Themen