Question

Ceci est mon code source

 def update
    @recipe = Recipe.find(params[:id])

    respond_to do |format|
      if @recipe.update_attributes(params[:recipe])
        format.html {redirect_to :action => "edit" }
      end
    end
  end

Je reçois une erreur sur cette ligne

respond_to do |format|

et le message d'erreur est « Vous avez un objet nul quand on ne s'y attendait pas. L'erreur est survenue lors de l'évaluation nil.call ».

Les cinq lignes de la trace de la pile sont les suivantes

/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/mime_responds.rb:175:in `respond'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/mime_responds.rb:173:in `each'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/mime_responds.rb:173:in `respond'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/mime_responds.rb:107:in `respond_to'
/Path from my machine to the app/app/controllers/recipes_controller.rb:43:in `update'

Je ne sais pas sur la façon de déboguer et je ne comprends pas comment cette erreur est soulevée.

Toute aide est vraiment apprécié.

Merci

Était-ce utile?

La solution

Si vous ne répondez pas aux clients non html, vous ne devez pas utiliser le respond_to.

Essayez de changer la méthode à:

  if @recipe.update_attributes(params[:recipe])
   redirect_to :action => "edit"
  end

Si cela fonctionne, l'erreur ressemble il est quelque part dans la configuration du type mime de votre application.

Autres conseils

Cette erreur cryptique apparaît lorsque vous n'utilisez pas le yieled format objet. En fait, vous devriez vraiment faire quelque chose quand l'appel échoue de update_attributes, par exemple le rendu modifier modèle:

  def update
    @recipe = Recipe.find(params[:id])

    respond_to do |format|
      if @recipe.update_attributes(params[:recipe])
        format.html { redirect_to [:edit, @recipe] }
      else 
        format.html { render :template => 'edit' }
      end
    end
  end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top