Rails Grape API端点返回空

时间:2016-10-21 21:57:37

标签: ruby-on-rails grape-api

问题

我有一个带有Grape API实现的Rails应用程序。在大多数情况下,一切运作良好。但是,我有一个特殊情况,名为cars的端点始终提供空字符串,get方法的代码永远不会执行,但路由似乎被识别,因为没有路由错误

观察

  1. binding.pry方法顶部的get永远不会被点击
  2. 如果我将端点(即资源)从cars重命名为trucks,则会提供预期结果。在这种情况下,除了资源名称之外我什么都没改变...... Base中的类名,文件名和挂载点都保持不变。
    • binding.pry在资源重命名后被点击
  3. 如果我完全删除文件cars.rb并删除base.rb中的文件夹,则应用仍然会在端点cars上提供空字符串(这表示该路线是从其他地方提供的,但/apiroutes.rbbundle exec rake routes中的任何内容似乎都没有表明这一点。)
  4. 参考

    /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
    

0 个答案:

没有答案