0

我正在努力解决我在最近的一个项目中遇到的问题。这是情景:

我正在调用 GoToWebinar API 以获取即将举行的网络研讨会。一切正常,网络研讨会以哈希的形式获取,如下所示:

[
{
"webinarKey":5303085652037254656,
"subject":"Test+Webinar+One",
"description":"Test+Webinar+One+Description",
"times":[{"startTime":"2011-04-26T17:00:00Z","endTime":"2011-04-26T18:00:00Z"}]
},
{
"webinarKey":9068582024170238208,
"name":"Test+Webinar+Two",
"description":"Test Webinar Two Description",
"times":[{"startTime":"2011-04-26T17:00:00Z","endTime":"2011-04-26T18:00:00Z"}]
}
]

我创建了一个 rake 任务,我们将每天运行一次以使用此哈希填充 CSV 文件,然后在控制器操作中读取 CSV 文件以填充视图。

这是我填充 CSV 文件的代码:

g = GoToWebinar::API.new()
@all_webinars = g.get_upcoming_webinars
CSV.open("#{Rails.root.to_s}/public/upcoming_webinars.csv", "wb") do |csv|
  @all_webinars.each do |webinar|
    webinar.to_a.each {|elem| csv << elem}
  end
end

我需要一些帮助来找出一种方法来保存以散列形式接收到的信息以保存在 CSV 文件中,以便保留订单,以及从 CSV 文件中读取回信息的方法它以相同的方式填充控制器操作中的哈希。

4

2 回答 2

0

您想使用散列的键(因为它们是常量)作为 CSV 文件的标题。然后在你做的时候推动每个元素。

g = GoToWebinar::API.new()
@all_webinars = g.get_upcoming_webinars
headers= @all_webinars.keys
CSV.open("#{Rails.root.to_s}/public/upcoming_webinars.csv", "wb", headers: headers) do |csv|
  @all_webinars.each do |webinar|
    webinar.to_a.each {|elem| csv << elem}
  end
end

但是,您将要确保散列值内的任何数据都被展平。需要处理数组内部的时间散列(也许只是删除时间并在散列中有一个 startTime 和 endTime 键)。

于 2012-05-07T00:10:59.613 回答
0

从我从所有示例中学到的知识和为此所做的工作中,我认为绕过此类功能的最佳方法是创建一个 rake 任务并使用信息填充数据库,并使用保存的信息来填充视图.

于 2012-05-13T10:13:31.150 回答