1

过去几天我一直在搞乱 Youtube_It gem,因为我正试图将它集成到我目前正在开发的 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。伟大的!但是我如何获得所有的唯一 ID?

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

4

1 回答 1

1

好的,有两个原因(根据您在 IRC 上给我的要点工作,位于此处):

1)您实际上并没有使用与控制台中相同的代码。您的控制台使用puts unique_idwhich 将打印唯一 ID 的值,但您只是使用unique_idwhich 将获取 ID...然后什么也不做。您想要的可能类似于data.videos.map(&:unique_id)(或data.videos.map { |v| v.unique_id }长格式),它将返回您的 ID 数组。

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

于 2013-10-11T07:35:11.750 回答