2013-04-02 24 views
1

我是新来的,对Ruby来说真的很新,所以我会尽我所能提出一个好问题。基本上我试图编写一个应用程序,返回用户被邀请参加的Facebook活动。很简单。问题是它一直这样返回这样的一切如何从Ruby返回哈希FQL查询

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

我只是想要的关键的价值。我尝试过使用[“name”]并查看基本的Ruby教程,但每次都遇到无数的错误。

这里是我的代码:

的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 

首页查看

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

非常感谢你提前为您的帮助!此外,如果任何人有更好的方式来构建这个,所以我不必在视图中做这么多工作,或者如何为控制器中的每个循环做更好的工作,那也会很好!

回答

0

我想出了我的问题,如果任何人都好奇。 fql查询将数组中的所有内容都存储在一个数组中,其中包含一个“位置”哈希值,因此每次显示查询时都会显示该数组。这是我的解决办法:

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"] 

现在我拉数组中的第一个对象的索引0和使用的关键“的名字。”像魅力一样工作!