38 votes

Concevoir des Routes et des Pages d'ouverture de session

Je vais essayer d'obtenir des Itinéraires Personnalisés de travail dans mon application Rails (Ruby 1.9.2 avec Rails 3).

C'est ma config/routes.rb fichier

match '/dashboard' => 'home#dashboard', :as => 'user_root'
devise_for :user do
   get "/login", :to => "devise/sessions#new" # Add a custom sign in route for user sign in
   get "/logout", :to => "devise/sessions#destroy" # Add a custom sing out route for user sign out
   get "/register", :to => "devise/registrations#new" # Add a Custom Route for Registrations
end

Mais la soumission du formulaire sur /login ou /registre de passe pour les utilisateurs/sign_in et les utilisateurs/sign_up. Comment puis-je empêcher que cela se produise. Ou encore mieux, assurez-vous que par défaut toutes les requêtes pour les utilisateurs/sign_in etc aller pour les lignes concernées, et non pas les routes par défaut généré par les Concevoir.

Aussi, comment puis-je faire le formulaire de connexion partielle de l'inclure dans n'importe quel contrôleur? Afin que je puisse avoir la Page de Connexion sur la page d'accueil (home#index) et pas sur les utilisateurs/sign_in?

Je suis l'aide de Concevoir 1.1.3 avec Rails 3 sur Ruby 1.9.2, sur Mac OSX Snow Leopard.

Merci!

77voto

doritostains Points 966

Avec Concevoir 1.1.3 le suivant devrait fonctionner

devise_for :user, :path => '', :path_names => { :sign_in => "login", :sign_out => "logout", :sign_up => "register" }

Les routes qu'il crée ne sera pas ajouté "/user/..." en raison de l' :path paramètre est une chaîne vide. L' :pathnames de hachage va prendre soin de nommer les itinéraires que vous le souhaitez. Concevoir utilisez ces itinéraires en interne afin de la soumettre à /login fonctionne comme vous le souhaitez et ne pas vous prendre pour /utilisateur/log_in

Pour ajouter un formulaire de connexion à votre page d'accueil il y a de l'info à la Concevoir Wiki: http://github.com/plataformatec/devise/wiki/How-To:-Display-a-custom-sign_in-form-anywhere-in-your-app

Ou faire quelque chose comme ceci:

 <%= form_tag new_user_session_path do %>
  <%= text_field_tag 'user[email]' %>
  <%= password_field_tag 'user[password]' %>
 <%=  submit_tag 'Login' %>

5voto

Waleed Asender Points 87

Le suivant a fonctionné pour moi:

  devise_for :users do
    get "/login" => "devise/sessions#new"
    get "/register" => "devise/registrations#new"
  end

3voto

shingara Points 26980

Vous avez juste besoin de ne pas mettre votre itinéraire spécial dans devise_for bloc

match '/dashboard' => 'home#dashboard', :as => 'user_root'
get "/login", :to => "devise/sessions#new" # Add a custom sign in route for user sign in
get "/logout", :to => "devise/sessions#destroy" # Add a custom sing out route for user sign out
get "/register", :to => "devise/registrations#new" # Add a Custom Route for Registrations
devise_for :user

Maintenant /connexion fonctionne. /utilisateurs/sign_in trop.

1voto

Vlada Points 11

J'ai créé mon propre contrôleur de auth et acheminé à concevoir des séances de contrôleur à mon contrôleur

devise_for :users, 
:controllers => {
    :sessions => 'auth' },

:path => '/',

:path_names => {
    :sign_in  => 'login',
    :sign_out => 'logout' }

Ce code va ajouter /login et /déconnexion url.

Plus sur ce que vous pouvez trouver dans le code source http://github.com/plataformatec/devise/blob/master/lib/devise/rails/routes.rb

0voto

Jayaram Points 311

Utilisez ce à le haut de vos itinéraires.rb fichier

carte.se connecter "utilisateurs/:l'action", :controller => 'utilisateurs', :action => /[a-z]+/i

utilisez-la sur l'endroit où votre fichier d'index. si c'est sur vos utilisateurs, utilisez le ci-dessus ou de modifier en conséquence

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X