ruby rails de redirection d'url de demande originale
Voici ce que j'ai pour les rediriger vers une url par défaut(myapp_url). Mais je veux changer de redirection pour aller à l'url de la requête a été entré par l'utilisateur après authentification.
Comment dois-je faire? J'ai essayé plusieurs options de recherche, comme par exemple :retour. Mais pas y aller.
Utilisateur saisit une url, si ce n'est authentifié obtient alors redirigé vers la page de connexion, puis après la connexion de l'utilisateur doit être redirigé vers l'url de demande originale.
def create
user = User.Authenticate(params[:user_id], params[:password])
if user
session[:user_id] = user.id
redirect_to myapp_url, :notice => "Logged in!"
else
flash.now.alert = "Invalid email or password"
render "new"
end
end
Avez-vous trouvé une solution?
Pas encore de.
Cette solution a fonctionné pour moi: stackoverflow.com/questions/9835365/...
Pas encore de.
Cette solution a fonctionné pour moi: stackoverflow.com/questions/9835365/...
OriginalL'auteur Kapish M | 2012-04-07
Vous devez vous connecter pour publier un commentaire.
Vous pouvez lire le chapitre sur "Convivial de redirection" dans le "Ruby on Rails Tutoriel" par Michael Hartl pour voir comment vous pouvez facilement mettre en œuvre.
Fondamentalement, vous avez 3 méthodes d'aide:
store_location
pour stocker l'utilisateur l'emplacement désiré dans la sessionredirect_back_or(url)
rediriger l'utilisateur vers la position enregistrée dans la session ou, si cela n'est pas, à l'emplacement indiqué dans laurl
méthode paramclear_return_to
utilisé "en interne" par lesredirect_back_or
méthode pour effacer la base de cette information, une fois utiliséEt puis vous utilisez ces méthodes:
A) quand vous voyez un utilisateur invité essayez d'accéder à une page qui nécessite une authentification utilisation
store_location
avant de rediriger lui à la page de connexion.B) lorsqu'un utilisateur est connecté, vous utilisez
redirect_back_or(url)
pour rediriger lui au bon endroit (si elle est présente, bien sûr)Ceci est un aperçu de la façon dont ce travail, vous avez l'idée, mais je vous suggère de lire ce chapitre pour la mise en œuvre (peu de) détails.
Posts
etcomments
, où les commentaires sont imbriqués dans les postes, et les commentaires se produire à partir de l'Postes#show. L'URL obtenue après la connexion seraitapp.com/posts/1/comments
provoquant une erreur de routage, ce qui ne serait pas le cas si la demande était un POST.Les redirections sont envoyées par le navigateur comme les requêtes GET. Même si vous avez le navigateur pour rediriger POST, l'original du formulaire de soumission de données ne sera pas assurée.
Le tutoriel lien dans la réponse est mort, voici une mise à jour du lien: railstutorial.org/book/_single-page#sec-friendly_forwarding
OriginalL'auteur Aldo 'xoen' Giambelluca
Vous avez besoin pour enregistrer le chemin d'accès dans la session avant la redirection sur l'authentification, et après le succès de l'auth rediriger vers ce chemin.
session[:return_to] ||= request.referer
redirect_to session[:return_to]
OriginalL'auteur MikDiet