2010-09-06 3 views
0

J'utilise Rails 3.0.0.rc avec Ruby 1.8.7 sur Snow Leopard. J'utilisais Builder pour limiter ce qui est renvoyé par render :xml pour un objet de modèle Utilisateur. Cela ne fonctionnait pas comme prévu, donc j'ai commenté mon bloc format.xml.Problème avec Rails 3.0.0 et Ruby 1.8.7? Erreur «nombre incorrect d'arguments» sporadique

Par exemple, ce fut ma users_controller.rb:

def create 
    # TODO: Limit the frequency at which this can be called. 
    @user = User.new 
    @user.first_name = params[:user][:first_name] 
    @user.last_name = params[:user][:last_name] 
    # etc... 

    respond_to do |format| 
     if @user.save 
     format.html { redirect_to(@user, :notice => 'User was successfully created.') } 
     format.xml { render :xml => @user, :status => :created, :location => @user } 
     else 
     format.html { render :action => "new" } 
     format.xml { render :xml => @user.errors, :status => :unprocessable_entity } 
     end 
    end 
    end 

J'ai changé le premier format.xml et commenté le bloc:

format.xml # { render :xml => @user, :status => :created, :location => @user } 

Quand j'ai enlevé mon commentaire et réintroduite le bloc, je reçois une erreur:

ArgumentError (wrong number of arguments (1 for 0)):
app/controllers/users_controller.rb:80:in create'
app/controllers/users_controller.rb:77:in
create'

J'ai reformaté le code de sorte que le render :xml appel est sur sa propre ligne, juste pour confirmer que c'est la source du problème.

Que se passe-t-il? Il y a trois arguments impliqués (pas 1) et depuis quand le rendu prend-il zéro argument? Pourquoi l'erreur n'apparaît-elle qu'après avoir rétabli le code dans son état d'origine?

Répondre

0

Il s'avère que l'erreur n'a pas été signalée correctement. J'ai eu une erreur dans ma méthode Users::to_xml.

Questions connexes