NoMethodError после выполнения успешного действия «создать» - PullRequest
6 голосов
/ 17 марта 2012

Я отправляю почтовый запрос в мой API, который работает нормально, он создает новую запись. Однако после создания записи я получаю эту ошибку в журнале сервера

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

Это мое творческое действие

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

Все мои ресурсы расположены под Api # V1, вот мой файл маршрутов

# 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

1 Ответ

8 голосов
/ 17 марта 2012

Для запроса HTML POST, после успешного создания объекта, response_with перенаправляет на путь объекта, то есть здесь он будет эквивалентен чему-то вроде

redirect_to Device.create(params[:device])

, который перенаправляет на device_url. Но поскольку у вас в маршрутах есть namespaced: devices, вам нужно указать это для вашего ответа response_with, который будет

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