Frage

Dies ist mein Quellcode

 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

Ich bekomme einen Fehler in dieser Zeile

respond_to do |format|

Und die Fehlermeldung lautet "Sie haben ein NIL -Objekt, wenn Sie es nicht erwartet haben. Der Fehler ist bei der Bewertung von nil.call aufgetreten."

Die fünf Zeilen aus der Stapelspur sind wie folgt

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

Ich habe keine Ahnung, wie ich dies debuggen und nicht verstehen kann, wie dieser Fehler aufgeworfen werden kann.

Jede Hilfe wird wirklich geschätzt.

Vielen Dank

War es hilfreich?

Lösung

Wenn Sie nicht auf Nicht-HTML-Kunden antworten, müssen Sie die Response_to nicht verwenden.

Versuchen Sie, die Methode zu ändern auf:

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

Wenn dies funktioniert, sieht der Fehler so aus, als ob er sich irgendwo in der MIME -Konfiguration Ihrer App befindet.

Andere Tipps

Dieser kryptische Fehler erscheint, wenn Sie die Erträge nicht verwenden Format Objekt. In der Tat sollten Sie wirklich etwas tun, wenn der Anruf von Update_attributes fehlschlägt, beispielsweise das Rendern der bearbeiten Schablone:

  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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top