我是新来的,对Ruby非常陌生,所以我会尽力提出一个好问题。基本上我正在尝试编写一个应用程序来返回用户被邀请的Facebook事件。很简单。问题是它不断返回这样的一切
[{"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 :(得分:0)
如果有人好奇,我想出了我的问题。 fql查询将所有内容存储在一个数组中,其中包含一个“location”哈希,因此每次显示查询时它都会显示数组。这是我的修复:
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处拉出数组中的第一个对象,然后使用键“name”。像魅力一样工作!