Ruby on rails 如何在ruby中从循环创建JSON对象的JSON数组
我试图循环浏览一些Ruby on rails 如何在ruby中从循环创建JSON对象的JSON数组,ruby-on-rails,ruby,Ruby On Rails,Ruby,我试图循环浏览一些视频对象,并尝试构建一个JSON数组,如下所示: [{"event_name":"video_completed","object_id":123456789}] 我创建了一个方法来执行此操作: def self.getEngagementRules(videos) rules = [] videos.each do |video| rule = { event_name: "video_completed",
视频
对象,并尝试构建一个JSON数组,如下所示:
[{"event_name":"video_completed","object_id":123456789}]
我创建了一个方法来执行此操作:
def self.getEngagementRules(videos)
rules = []
videos.each do |video|
rule = {
event_name: "video_completed",
object_id: video.image_hash.to_i
}
rules << rule.to_json
end
rules
end
我得到{“事件名称”:“视频完成”,“对象id”:123456789}
而不是[{“事件名称”:“视频已完成”,“对象id”:123456789}]
正确的方法是什么?这样我就可以循环浏览多个视频并获得我想要的结果
它应该能够处理多个视频和输出:
[{"event_name":"video_completed","object_id":123456789}, {"event_name":"video_completed","object_id":123456789}]
您的代码工作正常,您有一个数组,但是
put
将数组的每个元素打印在单独的行中
puts [1, 2, 3]
1
2
3
您的代码工作正常,您有一个数组,但是
put
将数组的每个元素打印在单独的行中
puts [1, 2, 3]
1
2
3
您希望首先组成一个ruby数组,然后将其转换为JSON:
rules = videos.map do |video|
{
event_name: "video_completed",
object_id: video.image_hash.to_i
}
end
rules.to_json
。仅当您只关心循环的副作用而不关心返回值时,才应使用每个
否则,您应该使用,
.inject
,。每个\u都带有\u对象
等,这向其他程序员表示您关心返回值(并且知道您在做什么)。您希望首先组成一个ruby数组,然后将其转换为JSON:
rules = videos.map do |video|
{
event_name: "video_completed",
object_id: video.image_hash.to_i
}
end
rules.to_json
。仅当您只关心循环的副作用而不关心返回值时,才应使用每个
否则,您应该使用,
.inject
,。每个带有对象的\u
等,这向其他程序员表示您关心返回值(并且知道您在做什么)。您的代码工作正常,您不是错误地打印了规则而不是规则
?此外,数组中的每个元素都是一个字符串,表示一个JSON[“{\”事件名称\“:\”视频完成\“,\”对象id \“:1234}”]
您的代码运行良好,您不是错误地打印了规则而不是规则
?此外,数组中的每个元素都是一个字符串,表示一个JSON[“{”event\u name\“:“video\u completed\”,“object\u id\”:1234}”]
你所说的“循环的副作用”是什么意思?例如,在ERB模板中,你使用的是。每个,因为你正在输出到一个字符串缓冲区,并且没有使用返回值。谢谢!我可能需要浏览一下我的项目,看看还有什么地方可以使用map来代替每个hahaw你说的“循环的副作用”是什么意思?例如,在ERB模板中,你使用。每个,因为你要输出到一个字符串缓冲区,并且没有使用返回值。谢谢!我可能需要通过我的项目,看看还有什么地方我可以使用地图,而不是每个哈哈