2012-11-24 4 views
1

Salut j'ai une forme simple pour mettre à jour un compte de l'utilisateur est ici mon contrôleurrails form_for erreur MongoId

def edit 
    @users = User.find(params[:id]) 
end 

ici est mon avis

<%= form_for :user do |f| %> 

<%= f.label :first_name %> <br /> 
<%= f.text_field :name ,:value => @users.name%><br /> 

<%= f.label :last_name %> <br /> 
<%= f.text_field :lname ,:value => @users.lname%><br /> 

<%= f.label :email %> <br /> 
<%= f.email_field :email ,:value => @users.email%><br /> 

<%= f.label :id %> <br /> 
<%= f.text_field :id ,:value => @users.id%><br /> 

<br /> 
<%= f.submit ({:confirm => "Are you sure?"}) %> 
<% end %> 

quand je clique soumettre je reçois l'erreur MongoId suivante

Mongoid::Errors::InvalidFind in UsersController#edit 

problème: appel Document.find avec zéro est invalide.

Résumé: 0: Document.find s'attend à ce que les paramètres soient 1 ou plusieurs identifiants, et retournera un document unique si 1 identificateur est fourni, sinon un tableau de documents si plusieurs identifiants sont fournis.

Résolution: Cela est probablement dû au fait que les paramètres sont transmis directement à la recherche, et que le paramètre n'est pas présent ou que la clé à laquelle il est accédé est incorrecte. Je suis assez novice avec des rails et c'est mon premier coup avec mongoDB. Toute contribution aiderait, merci.

+0

.. essayez d'utiliser <% = form_for @users do | f | %> – az7ar

Répondre

0

Essayez d'utiliser ce formulaire

<%= form_for(@users) do |f| %> 
    ... 
    ... 
<% end %> 

L'erreur vient du fait que vous utilisez :user que invalid find dans votre user controller