使用Rails中YouTube_It gem的输出时出现问题

时间:2013-10-11 06:57:59

标签: ruby-on-rails

在过去的几天里,我一直在搞乱Youtube_It宝石,因为我正在尝试将它集成到我正在研究的Rails 4应用程序中。

当我使用它运行搜索查询时,它会输出一个包含大量结果的数组。只要我在Rails控制台中,操作它就没有问题。一个简短的例子:

require 'youtube_it'

client = YouTubeIt::Client.new(:dev_key => "dev_key")  

data = client.videos_by(:query => "penguin")

data.videos.each { |v| puts v.unique_id }  

这将输出一个漂亮,整洁的列表,其中包含从查询中返回的所有唯一ID。

当我尝试在视图中做类似的事情时(我知道它不应该在视图中,它只是在那里进行测试)它只输出一个看似XML的巨大混乱列表。这似乎只有在我尝试使用.each迭代时才会发生。

当我做类似的事情时:

<% data = client.videos_by(:query => "penguin") %>

<%= data.videos[1].unique_id %>

这正是我所期望的,我选择的索引中的一个unique_id。大!但是我如何获得所有唯一身份证?

这就是我被困住的地方,非常感谢一些帮助! :)

1 个答案:

答案 0 :(得分:1)

好的,有两个原因(根据您在IRC上给我的要点here):

1)您实际上并未使用与控制台中相同的代码。您的控制台使用puts unique_id来打印唯一ID的值,但您只是使用unique_id来获取ID ...然后不执行任何操作。您想要的可能是data.videos.map(&:unique_id)(或长形式的data.videos.map { |v| v.unique_id }),它会返回一组ID。

2)您正在使用<%=,这意味着'评估此ruby行并将返回值输出到页面'。每个语句的返回值是您在每个语句中调用的对象 - 即。 data.videos,这就是打印出来的内容。