活动资​​源 rails 未获取数据

Active resource rails not fetching data

这是active.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_pathActive.element_path

对于前者,您将看到 "/api/v1/users/actives.json",因为 activeresource 期望 class Active 是您资源的名称。

您可以通过overriding two of the ActiveResource methods

控制生成的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"documentation 表示“在您已经拥有与所需模型同名的现有模型的情况下 RESTful 资源

您还可以使用 self.include_format_in_path = false as mentioned here.

删除格式 (.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

顺便说一句,我想 link 这个答案有一些非常有用 notes on customising ActiveResource 而无需求助于猴子补丁。