Ruby / Rails - использовать веб-сервис с ActiveResource - PullRequest
2 голосов
/ 14 февраля 2012

только что приступив к работе с Rails, я хотел бы использовать веб-сервис (использующий ActiveResource) со следующей конечной точкой:

GET / user? Some_header = XYZ

Это мой класс ActiveResource:

    class User < ActiveResource::Base
      self.site = "url"
      set_collection_name 'user'  #avoid pluralization within the url
    end

Как теперь будет выглядеть вызов для вышеуказанной конечной точки?

Я пытался

    User.get('', headers={:some_header => "XYZ"})

, но я получаю 404 (запрос работает, когда я запускаю его вручную).

Ответы [ 2 ]

1 голос
/ 15 февраля 2012

Нашел проблему. Хотя я указал пустой путь в своем методе get, Rails внутренне добавил ".json", поэтому созданный URL был

/ пользователь / .json? Some_header = XYZ "

То, как я это исправил, было

     User.collection_name = ""
     User.get('user', headers={:some_header => "XYZ"})

Кто-нибудь знает более чистое решение?

1 голос
/ 14 февраля 2012

Попробуйте

User.all(:params=>{:some_header => "XYZ"})

Если вы хотите избежать форматирования в вашем пути, вы можете переопределить базовый метод collection_path

   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}.#{format.extension}#{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
...