Я использую ActiveResource для управления доступом к внешней службе.
Внешний сервис имеет URL-адрес, например:
http://api.cars.com/v1/cars/car_id/range/range_num?filter=filter1,filter2
Вот мой класс автомобилей:
class Car < 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)}#{collection_name}/#{URI.parser.escape id.to_s}#{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)}#{collection_name}#{query_string(query_options)}"
end end
self.site = "http://api.cars.com/"
self.prefix = "/v1/"
self.format = :json
end
Когда я настраиваю свой объект, чтобы получить конкретную машину в консоли рельсов:
> car = car.new
> car.get('1234')
Я получаю URL вроде этого:
http://api.cars.com/v1/cars//1234.json
Как получить URL-адрес для включения элементов range и range_num?
Кроме того, мне не нужно расширение .json в конце URL. Я попытался переопределить методы element_name и collection_name, как описано здесь: Как удалить .xml и .json из URL при использовании активного ресурса , но, похоже, он не работает для меня ...
Заранее спасибо за любые идеи!