2


0

アクティブなリソースのネストされたルート

現在、アクティブなリソースを使用してサードパーティAPIと統合しようとしています。

Iveは大量の作業を完了しましたが、単一のネストされたリソースで苦労しています。

/company/:company_id/users/:id

を使用して会社からユーザーを取得できます

API

Company.find(124343).users

ユーザーへのその後の変更は保存されません。

引数を受け入れるためにBase.site属性を操作する必要があることは知っていますが、属性を設定する方法を見つけることができません。 たとえば、ユーザーレコードにはcompany_id値があります。 company_idを取得するのは簡単です。URLを正しく含める方法を見つけることができないため、正しいルートに移動せず、代わりに次のような場所に移動します。

/company//users/32435

1 Answer


1


これを試して

Class ABC
require "rubygems"
#This code block just makes sure not to append .json to the call
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}/#{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)}#{collection_name}#{query_string(query_options)}"
  end
end

#Ur site url
ActiveResource::Base.site = 'http://aaa:8080/'
self.format = :json
self.collection_name= "/company/"

def self.find(company_id, id)
  x = superclass.find(:all, :from => '/company/%s/users/%s' %[company_id,id])
  x
  end
end

あなたのコントローラーで

 @test=ABC.find(params[:customer_id],params[:id])

そして、これはAPIからデータを返します。 それがあなたのために働くかどうか私に知らせてください。