【问题标题】:Rails 4 and grape - undefined method `call' when splitting API fileRails 4和葡萄 - 拆分API文件时未定义的方法“调用”
【发布时间】:2013-10-12 18:49:16
【问题描述】:

我有一个 vanilla rails 4 应用程序,我正在尝试添加一个版本化的 Grape API。 rails 服务器启动正常,但是当我尝试访问 API URL (http://localhost:3000/v1/user/ping) 时,出现错误:

undefined method `call' for V1:Module

到目前为止,我设置的 API 非常简单,但我不知道为什么它不起作用

root/app/api/api.rb:

# root/app/api/api.rb
class API < Grape::API
  mount V1
end

在版本文件夹中,我想拥有API版本支持的所有类:root/app/api/v1/user.rb:

# root/app/api/v1/user.rb
module V1
  class user < Grape::API
    get :ping do
      { :ping => params[:pong] || 'pong' }
    end
  end
end

根/配置/路由:

TestApp::Application.routes.draw do
  mount API => '/'
end

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 grape-api


    【解决方案1】:

    我将我的 api 拆分为多个文件夹:

    v1/resources/users.rb
    v1/resources/orders.rb
    v1/entities/order.rb
    v2/resources/orders.rb
    

    然后在 api.rb 中挂载单个文件 ...

    mount V1::Resources::Users
    mount V1::Resources::Orders
    mount V2::Resources::Orders
    

    然后:

    version ['v2','v1'], cascade: true
    version 'v2', cascade: true
    

    【讨论】:

      最近更新 更多