这是活跃的。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 的注释,无需求助于猴子补丁。
此外,您还可以覆盖记录器,以便查看请求的详细信息。旋转rails c
并添加
ActiveResource::Base.logger = ActiveRecord::Base.logger
现在您可以运行
Active.all
并查看活动资源获取的详细信息。