这是活动的。rb
class Active < ActiveResource::Base
self.site = "http://localhost:3002/api/v1/users" # **When i run this it is not fetching data**
self.site = Net::HTTP.get(URI.parse("http://localhost:3002/api/v1/users")) # **When i run this i can see the data in console. Will get error Bad URI**
end
welcome_controller.rb
def index
@active = Active.all
end
我无法使用活动资源从中获取数据。请告诉我谢谢
我怀疑ActiveResource没有发出您期望的请求。您可以通过在Rails控制台中运行以下操作来获得一些清晰度:
Active.collection_path
和Active.element_path
对于前者,您将看到"/api/v1/users/actives.json"
作为activeresource,并期望类Active作为资源的名称。
您可以通过重写两个ActiveResource方法来控制生成的URI并删除资源规范(即.json)
class Active < ActiveResource::Base
class << self
def element_path(id, prefix_options = {}, query_options = nil)
prefix_options, query_options = split_options(prefix_options) if query_options.nil?
"#{prefix(prefix_options)}#{id}#{query_string(query_options)}"
end
def collection_path(prefix_options = {}, query_options = nil)
prefix_options, query_options = split_options(prefix_options) if query_options.nil?
"#{prefix(prefix_options)}#{query_string(query_options)}"
end
end
self.site = "http://localhost:3002/"
self.prefix = "/api/v1/users"
end
这将为您提供/api/v1/users
的收集路径
也许更干净的选择是使用self.element_name = "users"
;在您已经具有与所需RESTful资源具有相同名称的现有模型的情况下;
您也可以使用这里提到的self.include_format_in_path = false
来删除格式(.json)。
因此,使用也会产生同样的影响
class Active < ActiveResource::Base
self.include_format_in_path = false
self.site = "http://localhost:3002/"
self.prefix = "/api/v1/"
self.element_name = "users"
end
顺便说一句,我想链接到这个答案,其中有一些关于在不使用猴子补丁的情况下定制ActiveResource的非常有用的注释。