NoMethodError после запуска успешных "создать" действий

я отправляю запрос post в мой 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 ответов


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

redirect_to Device.create(params[:device])

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

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