1

我是新来的,对 Ruby 非常陌生,所以我会尽力提出一个好问题。基本上我正在尝试编写一个返回用户被邀请参加的 Facebook 事件的应用程序。很简单。问题是它不断返回这样的所有内容

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

我只想要密钥的值。我尝试使用 ["name"] 并查看基本的 Ruby 教程,但每次都会遇到无数错误。

这是我的代码:

家庭控制器:

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 >

非常感谢您的帮助!另外,如果有人有更好的方法来构建它,那么我不必在视图中做太多工作,或者如何为控制器中的每个循环做得更好,那也很好!

4

1 回答 1

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 处,并使用键“名称”。像魅力一样工作!

于 2013-04-09T03:27:17.333 回答