Ruby on rails Ruby/Rails-使用ActiveResource使用Web服务
刚开始使用Rails,我想使用具有以下端点的Web服务(使用ActiveResource): GET/user?some_header=XYZ 这是我的ActiveResource类:Ruby on rails Ruby/Rails-使用ActiveResource使用Web服务,ruby-on-rails,web-services,rest,activerecord,activeresource,Ruby On Rails,Web Services,Rest,Activerecord,Activeresource,刚开始使用Rails,我想使用具有以下端点的Web服务(使用ActiveResource): GET/user?some_header=XYZ 这是我的ActiveResource类: class User < ActiveResource::Base self.site = "url" set_collection_name 'user' #avoid pluralization within the url end 但我得到的是404(当我用
class User < ActiveResource::Base
self.site = "url"
set_collection_name 'user' #avoid pluralization within the url
end
但我得到的是404(当我用手发射时,请求会起作用)。试试看
User.all(:params=>{:some_header => "XYZ"})
如果要避免路径中的格式,可以使用ovveride base collection\u path方法
def collection_path(prefix_options = {}, query_options = nil)
prefix_options, query_options = split_options(prefix_options) if query_options.nil?
"#{prefix(prefix_options)}#{collection_name}.#{format.extension}#{query_string(query_options)}"
end
到
发现了问题。虽然我在get方法中指定了一个空路径,但Rails在内部附加了“.json”,因此构造的URL是 /user/.json?some_header=XYZ“ 我修理它的方式是
User.collection_name = ""
User.get('user', headers={:some_header => "XYZ"})
有人知道一个更干净的解决方案吗?尝试了它,得到了一个奇怪的错误,未定义#的方法“collect!”。但当我查看日志文件时,似乎构造了正确的请求。
def collection_path(prefix_options = {}, query_options = nil)
prefix_options, query_options = split_options(prefix_options) if query_options.nil?
"#{prefix(prefix_options)}#{collection_name}#{query_string(query_options)}"
end
User.collection_name = ""
User.get('user', headers={:some_header => "XYZ"})