我正在向我的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
答案 0 :(得分:8)
对于HTML POST请求,在成功创建对象后,respond_with会重定向到对象的路径,即此处它将等同于
redirect_to Device.create(params[:device])
重定向到device_url。但是,由于你的路由中有设备名称:设备,你需要在你的respond_with调用中指定它,这将是
respond_with :api, :v1, Device.create(params[:device])