Ruby on rails Ruby/Rails-使用ActiveResource使用Web服务

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(当我用

刚开始使用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(当我用手发射时,请求会起作用)。

试试看

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"})