Domanda

Questo è il mio codice sorgente

 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

ottengo un errore su questa linea

respond_to do |format|

e il messaggio di errore è "Hai un oggetto nullo quando non me l'aspettavo. Si è verificato l'errore durante la valutazione nil.call".

Le cinque linee della traccia dello stack sono i seguenti

/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'

Non ho idea su come eseguire il debug di questo e non riesco a capire come può questo errore essere sollevato.

Ogni aiuto è veramente apprezzato.

Grazie

È stato utile?

Soluzione

Se non si sta rispondendo ai clienti non-HTML, non c'è bisogno di usare il respond_to.

Provare a cambiare il metodo di:

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

Se funziona, l'errore sembra che sia da qualche parte nel tipo di configurazione mime della vostra applicazione.

Altri suggerimenti

Questo errore criptico appare quando non si utilizza il yieled formato oggetto. In realtà, si dovrebbe davvero fare qualcosa quando la chiamata update_attributes non riesce, ad esempio rendendo il modifica template:

  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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top