2010-08-16 6 views
2

В настоящее время я пытаюсь интегрироваться с сторонним API с использованием активного ресурса.Вложенные маршруты Active Resource

Ive завершил большую работу, но я борюсь с одним вложенным ресурсом.

/company/:company_id/users/:id 

я могу получить пользователь от компании, используя

API :: Company.find (124343) .users

но любые последующие изменения пользователя не спасут.

Я знаю, что мне нужно играть с атрибутом Base.site, чтобы принять аргумент, я просто не могу найти, как установить атрибут. Например, в пользовательской записи оно имеет значение company_id. Таким образом, получивший company_id легко, я просто не могу работать, как получить URL, чтобы содержать его правильно, и поэтому его не будет правильным путем, вместо того, чтобы идти куда-нибудь

/company//users/32435 
+0

Можете ли вы указать, как вы в настоящее время генерируете URL? – mark

+0

Я создаю новый класс и наследую от ActiveResource :: Base (Base

+0

Эй, не могли бы вы отредактировать свое оригинальное сообщение и скопировать дословно route.rb, а также форму, которая генерирует URL. – Trip

ответ

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. Сообщите мне, если это сработает для вас.

Смежные вопросы