Pergunta

Este é o meu código -fonte

 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

Eu recebo um erro nesta linha

respond_to do |format|

e a mensagem de erro é "você tem um objeto nulo quando não esperava. O erro ocorreu ao avaliar a NIL.CALL".

As cinco linhas do rastreamento da pilha são as seguintes

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

Não tenho idéia de como depurar isso e não consigo entender como esse erro pode ser levantado.

Qualquer ajuda é realmente apreciada.

Obrigado

Foi útil?

Solução

Se você não está respondendo a clientes não-HTML, não precisará usar o RESPOST_TO.

Tente mudar o método para:

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

Se isso funcionar, o erro parece estar em algum lugar na configuração do tipo MIME do seu aplicativo.

Outras dicas

Este erro enigmático aparece quando você não usa o rendimento formato objeto. Na verdade, você realmente deve fazer algo quando a chamada de atualização_attributes falhar, por exemplo, renderizando o editar modelo:

  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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top