Je suis nouveau sur les rails!Méthode de contrôleur Rails allant au pluriel
Ok, j'essaye de mettre en place un formulaire d'inscription d'utilisateur. Il est mappée comme une ressource unique dans les routes
map.resource :user
et en essayant de créer l'utilisateur via la console fonctionne très bien. le code du contrôleur pour l'inscription de l'utilisateur est la suivante:
def signup
@user = User.new#(params[:user])
end
def create
@user = User.new(params[:user])
#debugger
if request.post?
if @user.save
session[:user] = User.authenticate(@user.login, @user.password)
flash[:message] = "Signup successful"
redirect_to registries_path
else
flash[:warning] = "Signup unsuccessful"
#redirect_to 'user/signup'
end
end
end
La vue de votre inscription est la suivante (ce qui est là que je pense quelque chose va mal)
<% form_tag user_path do %>
<p>User creation.</p>
<p><%= error_messages_for 'user' %></p>
<p>
<label>Username:</label>
<%= text_field_tag 'login', nil, :size => 20, :maxlength => 20 %>
</p>
<p>
<label>Password:</label>
<%= password_field_tag 'password', nil, :size => 20, :maxlength => 20 %>
</p>
<p>
<label>Password confirmation:</label>
<%= password_field_tag 'password_confirmation', nil, :size => 20, :maxlength => 20 %>
</p>
<p>
<label>Email:</label>
<%= text_field_tag 'email' %>
</p>
<p><%= submit_tag 'Signup' %></p>
<% end %>
Maintenant, cette page rend ça va. J'ai appelé le formulaire sur le "user_path" qui est singulier (je pense?). Mais quand je frappe le bouton d'envoi, il me donne une erreur disant que
uninitialized constant UsersController
l'apparition de l'erreur est logique, puisque l'utilisateur est censé être singulier, donc si elle tente d'appeler le contrôleur des utilisateurs, il devrait être en train de relâcher une erreur. Quand j'ai vérifié le journal du serveur, il affiche ce message:
Processing ApplicationController#create (for 127.0.0.1 at 2010-05-08 16:26:14) [POST]
Parameters: {"commit"=>"Signup", "password_confirmation"=>"[FILTERED]", "action"=>"create", "authenticity_token"=>"yOcHY+rMjaqmu9HS8EwnDqJKbc0Zxictc0y4dtD26ac=", "controller"=>"users", "login"=>"bob", "password"=>"[FILTERED]", "email"=>"[email protected]"}
NameError (uninitialized constant UsersController):
Dans les params, je vois qu'il appelle le contrôleur « utilisateurs ». Mais je ne suis pas sûr de savoir comment résoudre ce problème, ou ce qui l'amène à appeler le contrôleur «utilisateurs» par opposition au contrôleur «utilisateur».
Des idées? Merci d'avance!
oh. Je pensais que puisqu'il n'y aurait qu'un seul utilisateur à la fois (par adresse IP de toute façon, ou quelque chose comme ça), une ressource singulière était la voie à suivre. comme comment certains modèles utilisent Session comme une ressource singulière puisqu'il n'y a qu'une seule session active par personne? dans ce cas, je pourrais juste aller aux utilisateurs, et voir ce qui se passe. merci! –
Vous pouvez, par exemple, autoriser un utilisateur à voir les profils d'autres utilisateurs. – kingjeffrey
Ok, je suis allé à la méthode des utilisateurs au pluriel, et cela fonctionne comme je le voulais. Merci! :) Les sessions sont-elles normalement traitées comme une ressource singulière? Et si oui, y a-t-il une explication simple quelque part pourquoi les deux sont traités différemment, et peut-être même quelques informations sur ce qui est normalement traité comme un pluriel et ce qui est normalement traité comme un singulier? –