Ruby on rails RubyonRails:FoursquareRemoveList项的值对于项id无效

Ruby on rails RubyonRails:FoursquareRemoveList项的值对于项id无效,ruby-on-rails,ruby,foursquare,httparty,Ruby On Rails,Ruby,Foursquare,Httparty,我正在尝试从FourSquare列表中删除一个特定项,我最初使用的是Foursquare2 gem,但一直在使用HttpParty进行调试。我正在执行以下请求: HTTParty.post("https://api.foursquare.com/v2/lists/#{list.id}/deleteitem?v=20120321&itemId=#{item.foursquare_id}&oauth_token=#{ENV['FOURSQUARE_TOKEN']}") 我确信列表i

我正在尝试从FourSquare列表中删除一个特定项,我最初使用的是Foursquare2 gem,但一直在使用HttpParty进行调试。我正在执行以下请求:

HTTParty.post("https://api.foursquare.com/v2/lists/#{list.id}/deleteitem?v=20120321&itemId=#{item.foursquare_id}&oauth_token=#{ENV['FOURSQUARE_TOKEN']}")
我确信列表id和项目id是正确的,我仔细检查了一下,但得到了以下响应:

param_error: Value is invalid for item id (400)

我会尝试使用Ruby的内置类以编程方式构建URL:

这是一个好主意,因为有些值必须在URL中编码。简单地把它们塞进一根绳子对你来说是不行的。相反,依赖于一个考虑到这些东西的类


gem更全面,所以如果你需要更多的功能/功能,可以看看那里。

你应该在你的URL中使用
item.id
还是
item.foursquare\u id
?@我刚才放item.id的那个人表示我在做什么,我实际使用的值是该项目的foursquare\u id。啊。不要那样做。解释时要具体,因为像这样的小错误通常是代码中真正的问题,或者在我们试图从不准确的描述中找出真正的问题时,会导致问题有一长串的注释。谢谢,知道这些很有帮助。我用venueId而不是itemId尝试了我的原始代码,它成功了。我认为问题在于itemId和venueId是相同的,这并不能让foursquare端点非常满意。不过我很感谢你的帮助。
require 'ostruct'
require 'uri'

#
# set up some variables just for example values
#
list = OpenStruct.new('id' => 'some_list_id')
item = OpenStruct.new('foursquare_id' => 'some_foursquare_id')
ENV['FOURSQUARE_TOKEN'] = 'foo'

uri = URI.parse("https://api.foursquare.com/v2/lists/#{ list.id }/deleteitem")
uri.query = URI.encode_www_form(
  'itemId' => item.foursquare_id,
  'oauth_token' => ENV['FOURSQUARE_TOKEN'],
  'v' => 20120321,
)

uri.to_s
=> "https://api.foursquare.com/v2/lists/some_list_id/deleteitem?itemId=some_foursquare_id&oauth_token=foo&v=20120321"