2013-04-02 2 views
1

Je suis nouveau ici et vraiment nouveau à Ruby alors je ferai de mon mieux pour poser une bonne question. Fondamentalement, j'essaie d'écrire une application qui renvoie les événements Facebook auxquels un utilisateur a été invité. Assez simple. Le problème est qu'il continue de tout retourner comme çaComment retourner Hash FQL Query à partir de Ruby

[{"name"=>"SPB Presents An Evening With Demetri Martin"}], [{"name"=>"Say \"Pi\" to Passover!"}] 

Je veux juste la valeur de la clé. J'ai essayé d'utiliser ["name"] et regarder le tutoriel Ruby de base, mais j'ai eu une myriade d'erreurs à chaque fois.

Voici mon code:

HomeController:

def index 
if session["fb_access_token"].present? 
    @fql = Koala::Facebook::API.new(session["fb_access_token"]) 
    @invites = @fql.fql_query("SELECT eid FROM event_member WHERE uid = me()") 
end 

def names(eid) 
if session["fb_access_token"].present? 
    @fql = Koala::Facebook::API.new(session["fb_access_token"]) 
    @fql.fql_query("SELECT name FROM event WHERE eid = #{eid}") 
end 
end 

Accueil Voir

<% if @invites %> 
     <% for invite in @invites %> 
       <p><%=h names(h invite["eid"])%></p> 
<% end > 
<% end > 

Merci beaucoup d'avance pour votre aide! Aussi, si quelqu'un a une meilleure façon de construire cela, je n'ai pas besoin de travailler autant sur les vues ou de faire mieux pour chaque boucle dans le contrôleur, ce serait bien aussi!

Répondre

0

J'ai trouvé mon problème si quelqu'un est curieux. La requête fql stocke tout dans un tableau avec un hachage de "location" dedans, donc chaque fois que j'ai affiché la requête, il a affiché le tableau. Ce fut ma solution:

def names(eid) 
    if session["fb_access_token"].present? 
    @fql = Koala::Facebook::API.new(session["fb_access_token"]) 
    @hashmap = @fql.fql_query("SELECT name FROM event WHERE eid = #{eid}") 
    @name = @hashmap[0]["name"] 

Maintenant, je tire le premier objet du tableau à l'index 0 et l'utilisation de la touche « nom. » Travaillé comme un charme!