2012-03-16 22 views
6

Sto inviando una richiesta di posta alla mia API che funziona correttamente, crea un nuovo record. Tuttavia, dopo aver creato il record ottengo questo errore nel registro del serverNoMethodError dopo aver eseguito con successo l'azione 'create'

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

Questo è il mio Crea azione

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

tutte le mie risorse sono namespace sotto Api # V1, qui è il file miei percorsi

# 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 

risposta

8

per una richiesta POST HTML, dopo aver creato con successo l'oggetto, respond_with reindirizza al percorso dell'oggetto, cioè qui sarebbe equivalente a qualcosa come

redirect_to Device.create(params[:device]) 

che reindirizza a device_url. Ma dal momento che hai un namespace: dispositivi nei tuoi percorsi, devi specificarlo alla tua risposta_con chiamata, che sarebbe

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

Sei tu l'uomo, grazie. –

+0

Funziona come un fascino! Grazie uomo. –

+0

funziona, grazie per la soluzione. Ma c'è comunque da disabilitare per reindirizzare in respond_with? dal momento che si tratta di una richiesta di posta API, non abbiamo davvero bisogno del comportamento di reindirizzamento. – lionel

Problemi correlati