Sie können einfach die Devise::SessionsController
erweitern, um Ihre Bedürfnisse zu erfüllen. Wenn man sich die source code aussieht, verwendet Devise after_sign_in_path_for
in den Benutzer zu einem bestimmten Pfad nach einer erfolgreichen Anmeldung zu umleiten.
Unter der Annahme, die Ressource, die Sie haben, ist ein User
In Ihrem routes.rb
an, welche Router Devise verwenden sollte :
:
devise_for :users, controllers: {sessions: 'sessions'}
Dann einen Controller in app/controllers/sessions_controller
, die aus Devise::SessionsController
und überschreiben die after_sign_in_path_for
erbt erstellen
class SessionsController < Devise::SessionsController
protected
def after_sign_in_path_for(resource)
params[:redirect_path].presence || stored_location_for(resource)
end
end
In Ihrer neuen Sitzung Form (app/views/devise/sessions/new.html.erb
), eine versteckte Markierung hinzufügen, die die redirect_path
param an die Steuerung weiterleitet:
<%= hidden_field_tag :redirect_path, params[:redirect_path].presence %>
Nun, wenn der Benutzer besucht new_user_session_path(redirect_path: some_path)
, sollten sie auf den gewünschten Pfad umgeleitet werden, nachdem eine erfolgreiche Anmeldung.