2010-09-20 10 views
44

Tengo el siguiente código del controlador:Rails 3 devolviendo un HTTP 406 ¿No es aceptable?

def create 
    @admin = Admin.new(params[:admin]) 
    respond_to do |format| 
     if @admin.save 
     redirect_to(@admin, :notice => 'Admin was successfully created.') 
     else 
     render :action => "new" 
     end 
    end 
    end 

    def update 
    @admin = Admin.find(params[:id]) 
    respond_to do |format| 
     if @admin.update_attributes(params[:admin]) 
     redirect_to(admin_admins_path, :notice => 'Admin was successfully updated.') 
     else 
     render :action => "edit" 
     end 
    end 
    end 

y las siguientes rutas:

  admin_admins GET /admin/admins(.:format)   {:action=>"index", :controller=>"admin/admins"} 
      admin_admins POST /admin/admins(.:format)   {:action=>"create", :controller=>"admin/admins"} 
     new_admin_admin GET /admin/admins/new(.:format)  {:action=>"new", :controller=>"admin/admins"} 
     edit_admin_admin GET /admin/admins/:id/edit(.:format) {:action=>"edit", :controller=>"admin/admins"} 
      admin_admin GET /admin/admins/:id(.:format)  {:action=>"show", :controller=>"admin/admins"} 
      admin_admin PUT /admin/admins/:id(.:format)  {:action=>"update", :controller=>"admin/admins"} 
      admin_admin DELETE /admin/admins/:id(.:format)  {:action=>"destroy", :controller=>"admin/admins"} 

Ahora, además de la denominación poco loco - las redirecciones siempre resultan en un 406 No es aceptable. ¿Qué podría estar mal?

Respuesta

80

Eliminar respond_to do |format| bloques. Debido a que no está especificando a qué formato está respondiendo, p. format.html { #your code here }. Consulte la documentación de respond_to cómo usarla correctamente.

+0

quizá este enlace tienen la info que está buscando: http://techoctave.com/c7/posts/36-rails-3-0-rescue-from-routing-error-solution – nisevi

9

Tuve un error similar, mi controlador solo respondía a JSON. Lo necesitaba para responder a HTML también para las pruebas de trabajar (que sólo tiene sentido):

class AdsController < ApplicationController 
    respond_to :json, :html 

recibí el error al intentar hacer: assert_redirected_to AD_URL (ad)

+2

Gracias, esto fue lo que estaba causando un error 406 para mí. – patrickandroid

+0

Esto solo solucionará el problema si usa junto con 'responder_con @ obj'. De lo contrario, especificar 'responder_a' en el controlador es noop. – maletor

+0

@maletor, no es correcto. Se generan 406 errores independientemente de si se usa 'responder_con' o no. –

Cuestiones relacionadas