2010-08-23 5 views
2

J'essaie de faire fonctionner l'api highrise avec mon projet. noob total.Exemple d'API Highrise. help

J'ai un compte, ai ma clé d'api, a ajouté à mon projet de rails comme ainsi dans mon contrôleur.

require 'highrise' Highrise :: Base.site = 'http://MYACCOUNT.highrisehq.com' Highrise :: Base.user = 'KEY MyApi'
de @person = Highrise :: Person.find (: tous)

À mon avis, je peux obtenir tous les noms de mes contacts, mais je n'arrive pas à trouver comment réduire cette liste. Donc, si @person = Highrise :: Person.find (: all) les récupère tous, qu'est-ce que vous allez chercher, par exemple, avec le nom "larry"?

J'ai essayé et je ne peux tout simplement pas envelopper ma tête autour de cela.

Répondre

3

J'utiliserais @people pour une variable d'instance pour ce que vous avez, puisque votre requête renvoie plusieurs enregistrements. Vous pouvez boucler sur ces dossiers et imprimer les champs sur une personne comme suit:

<% @people.each do |person| %> 
    <%= "Got a person: #{person.inspect}" %> 
<% end %> 

Au lieu d'imprimer chaque personne, vous pouvez vérifier la valeur que vous aimez, peut-être puts person if person.name == "larry", mais si vous savez que vous voulez « larry "à l'avant, alors vous voulez interroger Highrise pour un seul enregistrement. Découvrez List by search criteria sur les documents de l'API Highrise. Je ne l'ai pas utilisé, mais je voudrais essayer avec vos critères /people/search.xml?criteria[email][email protected] qui devrait retourner une collection de résultats, puis si vous trouvez le larry spécifique que vous voulez, vous avez l'ID utilisateur, et vous pouvez utiliser l'action "show" de l'API, par exemple /people/#{id}.xml (passez ici l'identifiant de larry) pour rechercher le seul enregistrement.

+0

Andy, je suis en mesure de tirer tous les enregistrements. La partie que je ne comprends vraiment pas est la deuxième partie (je sais que vous n'avez pas utilisé l'API) Où et comment utiliser /people/search.xml?criteria[email][email protected] (PART dans mon contrôleur C'est la partie qui me manque. @person = Highrise :: Person.find (: all) La première partie a été d'une grande aide - Merci. Je n'arrive pas à trouver de très bonnes informations sur le sujet. Larry – Fresh

+0

Vous devez générer une requête HTTP Get au serveur Highrise. Consultez [Rest Rest] (http://github.com/adamwiggins/rest-client) pour Ruby. L'API a l'air de renvoyer XML. Cela signifie que vous voudriez probablement aussi un analyseur XML. Je regarderais [Nokogiri] (http://nokogiri.org/). Générer des requêtes et gérer les réponses sont des tâches non triviales, mais cela vaudra la peine d'apprendre ces compétences, car la plupart des API fonctionnent de cette façon, et il y a de fortes chances que vous travailliez avec plus d'API dans un autre projet. Peut-être que vous pouvez créer une bibliothèque Ruby wrapper si elle n'existe pas déjà. –

4

donc je suis ma réponse
dans mon contrôleur

@tag = params[:tag] 
@person = Highrise::Person.find(:all, :from => "/people/search.xml?term=#{@tag}") 


THanks Andy for your help . set me on the right path 
+0

Maintenant, je ne peux pas sembler comprendre comment mettre à jour un enregistrement. Je ne peux pas utiliser @ personne.save Perdu – Fresh