2012-03-16 16 views
6

Estoy enviando una solicitud a mi API que funciona bien, crea un nuevo registro. Sin embargo, después de que se creó el registro me sale este error en el registro del servidorNoMethodError después de ejecutar con éxito la acción 'crear'

NoMethodError (undefined method `device_url' for #<Api::V1::DevicesController:0x007fa2f5dde5d8>):app/controllers/api/v1/devices_controller.rb:14:in `create' 

Ésta es mi Crear acción

def create 
    respond_with Device.create(params[:device]) 
end 

Todos mis recursos son espacios de nombres bajo el Api # V1, aquí está mi archivo de rutas

# Api ('/api') 
namespace :api do 
    # Version 1 ('/api/v1') 
    namespace :v1 do 
     # Locations ('/api/v1/locations') 
     resources :locations 
     # Videos ('/api/v1/videos') 
     resources :videos 
     # Devices ('/api/v1/devices') 
     resources :devices 
    end 
end 

Respuesta

8

para una petición POST HTML, después de crear con éxito el objeto, respond_with redirige a la trayectoria del objeto, es decir, sería el equivalente a algo así como

redirect_to Device.create(params[:device]) 

que redirige a device_url. Pero como tiene espacio de nombres: dispositivos en sus rutas, debe especificar eso en su respuesta_con llamada, que sería

respond_with :api, :v1, Device.create(params[:device]) 
+0

Usted es el hombre, gracias. –

+0

¡Funciona como un encanto! Gracias hombre. –

+0

funciona, gracias por la solución. Pero, ¿hay alguna forma de deshabilitar para redirigir en la respuesta_con? dado que se trata de una solicitud posterior a la API, realmente no necesitamos el comportamiento de redireccionamiento. – lionel

Cuestiones relacionadas