2010-07-27 17 views
0

Je viens de lancer une commande [script/generate echafaud User] pour générer mes fichiers. Toutes les pages de CRUD fonctionnent bien alors c'est bien et maintenant j'essaye de créer plus de pages. Je crée une méthode dans le fichier user_controller.rb comme suit:Définition d'actions pour ActionController dans Rails

Identifiez-vous def

#blahblah

fin

ensuite créé app/views/utilisateurs/login.html.erb pour la vue . Quand j'ai essayé d'y accéder via le navigateur [http://localhost:3000/users/login] il donne l'erreur:

ActiveRecord :: RecordNotFound (Impossible de trouver l'utilisateur avec ID = login): app/controllers/users_controller.rb: 16: dans `show '

Je l'interprète comme utilisant l'action show et ne reconnaît pas la connexion comme une action. Ai-je manqué une configuration pour que cette action fonctionne? Je suis assez nouveau à Rails, donc je pourrais manquer quelque chose de trivial. Merci!

MISE À JOUR J'ai essayé d'utiliser [script/generate user User] puis j'ai créé des méthodes d'action dans le contrôleur et ses vues correspondantes. Cela semble fonctionner comme prévu. Qu'est-ce qui fait la différence entre les deux et quelles sont les causes de la création de méthodes d'action supplémentaires lors de l'utilisation de script/generate échafaudage non disponible?

Répondre

0

Vous devez ouvrir votre fichier de routes et ajouter un mappage de collection à la route des utilisateurs. Dans votre cas, la ligne pourrait se lire map.resources :users, :collection => { :login => :get }

Découvrez http://guides.rubyonrails.org/routing.html pour plus d'informations sur les itinéraires Rails

+0

grands! ça fonctionne bien. Cependant, pourquoi est-ce que, si j'utilise [script/generate user controller] alors ajouter des méthodes dans le contrôleur et leurs vues correspondantes, elles fonctionnent sans paramétrer le mapping? Qu'est-ce qui rend le script/générer un échafaud différent? Merci! – Paul

+0

Attendez ... Je pense que je comprends maintenant. Merci! – Paul