我有一个带有Grape API实现的Rails应用程序。在大多数情况下,一切运作良好。但是,我有一个特殊情况,名为cars
的端点始终提供空字符串,get
方法的代码永远不会执行,但路由似乎被识别,因为没有路由错误
binding.pry
方法顶部的get
永远不会被点击cars
重命名为trucks
,则会提供预期结果。在这种情况下,除了资源名称之外我什么都没改变...... Base
中的类名,文件名和挂载点都保持不变。
binding.pry
在资源重命名后被点击cars.rb
并删除base.rb
中的文件夹,则应用仍然会在端点cars
上提供空字符串(这表示该路线是从其他地方提供的,但/api
,routes.rb
和bundle exec rake routes
中的任何内容似乎都没有表明这一点。) /app/api/v2/cars.rb(在/api/v2/cars
处提供空字符串)
module V2
class Cars < Grape::API
resource :cars do
get do
cars = Car.all
present cars, with: V2::Entities::Car
end
end
end
end
/app/api/v2/cars.rb(在/api/v2/trucks
投放预期结果)
module V2
class Cars < Grape::API
resource :trucks do # Renamed from cars to trucks
get do
cars = Car.all
present cars, with: V2::Entities::Car
end
end
end
end
routes.rb(此帖子已简化)
Rails.application.routes.draw do
namespace :inventory do
resources :assets do
collection do
get :scan
end
end
end
resources :vehicles do
resources :cars, except: [:index, :show, :edit]
end
get 'home/index'
get 'home/inventory'
get 'home/vehicles'
devise_for :users
root to: 'home#index'
mount V2::Base => '/api'
end