2011-12-28 2 views
0

J'ai une application avec des ressources imbriquées. mes itinéraires sont:rails imbriqué concevoir la redirection

resources :teams do 
    resources :blogs 
end 

dans mon contrôleur de blogs, im en utilisant une autre mise en page, en ajoutant

layout "teamlayout" 

au contrôleur. Les deux mises en page, application.html.erb et teamlayout.html.erb ont inclus un formulaire de connexion lui-même. que j'ai fait travailler par ceci: https://github.com/plataformatec/devise/wiki/How-To:-Display-a-custom-sign_in-form-anywhere-in-your-app

maintenant ma question. lorsqu'un utilisateur se connecte, je veux lui redirigé vers la page d'où il se connecte

Répondre

0

Vous avez un couple d'options:.

Inclure une valeur de champ caché sous la forme de connexion qui décrit la source de la connexion (par exemple, hidden_field_tag(:login_source, "team")) et définissez votre propre logique pour SessionsController # create qui utilise la valeur du champ masqué pour déterminer l'emplacement de response_with.

Ou, vous pouvez garder la trace de l'emplacement de l'utilisateur à l'aide d'un before_filter dans les contrôleurs avec les formulaires de connexion en faisant quelque chose comme

def store_location 
    session['saved_location'] = request.request_uri 
end 

Ensuite, vous pouvez remplacer la méthode after_sign_in_path_for (ressource) dans votre contrôleur d'application utiliser la valeur de la session saved_location pour déterminer où rediriger.

La deuxième option semble un peu moins invasive pour l'infrastructure Devise, mais elle est un peu moins flexible.

+0

thx! m'a aidé :) – malice