Ruby 无法使用RocketPants客户端发送post或put参数

Ruby 无法使用RocketPants客户端发送post或put参数,ruby,httparty,rocketpants,Ruby,Httparty,Rocketpants,我正在使用编写一个api客户端,并试图使用gem中包含的HttpParty来读取、创建、更新和销毁资源 阅读和销毁作品很好,但我在创建和更新资源(在下面的示例中,事件)时遇到了问题 具体而言,我正在尝试以下方法: def create_event params post "events", :body => { :event => params }, :transformer => Event end 但在API方面,它总是给我 Rendering error for A

我正在使用编写一个api客户端,并试图使用gem中包含的HttpParty来读取、创建、更新和销毁资源

阅读和销毁作品很好,但我在创建和更新资源(在下面的示例中,事件)时遇到了问题

具体而言,我正在尝试以下方法:

def create_event params
  post "events", :body => { :event => params }, :transformer => Event
end
但在API方面,它总是给我

Rendering error for ActionController::ParameterMissing:
key not found: event
即使我在发帖请求中包含了它

但是,当我尝试直接使用HTTParty时,如下所示:

HTTParty.post(
  "http://localhost:3000/1/events",
  :headers => {
    'Authorization' => ActionController::HttpAuthentication::Token.encode_credentials("test token")
  },
  :body => {
    :event => {
      :name => "test"
    }
  }
)
它可以工作,所以不可能是API不工作。这种方法有两个缺点:我需要手动传递授权,并且结果不会包装为事件

我是否遗漏了正确发送post和put请求的内容?我还查看了文档和规范,但没有找到任何关于发布/放置的内容(例如,请参阅)

这是我的全部代码:

require "ticket_gate/version"
require "rocket_pants"

module TicketGate
  class Client < RocketPants::Client
    # ---- Setup -----------------------------------
    # ----------------------------------------------
    version 1
    base_uri 'http://localhost:3000'

    def initialize access_token = nil
      raise 'Please initialize with your api access token' unless access_token
      @access_token = access_token
    end

    def base_request_options
      { :headers => { 'Authorization' => ActionController::HttpAuthentication::Token.encode_credentials(@access_token) } }
    end

    # ---- Events -----------------------------------
    # -----------------------------------------------
    class Event < APISmith::Smash
      property :created_at
      property :end_at
      property :id
      property :name
      property :parent_id
      property :start_at
      property :ticket_limit
      property :updated_at
    end

    def list_events
      get "events", :transformer => Event
    end

    def get_event id
      get "events/#{id}", :transformer => Event
    end

    #### HERE IS THE PROBLEM
    def create_event params
      post "events", :body => { :event => params }, :transformer => Event
    end

    #### HERE IS THE PROBLEM
    def update_event id, params
      put "events/#{id}", :body => { :event => params }, :transformer => Event
    end

    def destroy_event id
      delete "events/#{id}", :transformer => Event
    end
  end
end
需要“票门/版本”
需要“火箭裤”
票务模块
类Client{'Authorization'=>ActionController::HttpAuthentication::Token.encode_凭证(@access_Token)}
结束
#----事件-----------------------------------
# -----------------------------------------------
类事件Event
结束
def get_事件id
获取“events/#{id}”,transformer=>Event
结束
####问题就在这里
def create_事件参数
post“events”,:body=>{:event=>params},:transformer=>event
结束
####问题就在这里
def update_事件id,参数
放置“events/#{id}”,:body=>{:event=>params},:transformer=>event
结束
def销毁事件id
删除“events/#{id}”,transformer=>Event
结束
结束
结束
RocketPants在内部使用HTTP请求

从中,我试图找出如何正确传递POST参数,我猜这就是您应该做的:

post "events", :extra_body => { :event => params }, :transformer => Event