活动资源 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_path
和 Active.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 而无需求助于猴子补丁。
这是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_path
和 Active.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.
所以你可以通过使用产生同样的效果:
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 而无需求助于猴子补丁。