ric*_*cks 2 ruby ruby-on-rails
我正在尝试循环访问一些video对象,并且正在尝试构建一个如下所示的 JSON 数组:
[{"event_name":"video_completed","object_id":123456789}]
Run Code Online (Sandbox Code Playgroud)
我创建了一个方法来执行此操作:
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
Run Code Online (Sandbox Code Playgroud)
我正在创建哈希值,然后将它们转换为 JSON 并将其附加到我的数组中,rules但是当我运行时:
puts rules
Run Code Online (Sandbox Code Playgroud)
我明白了{"event_name":"video_completed","object_id":123456789}
代替[{"event_name":"video_completed","object_id":123456789}]
这样做的正确方法是什么,以便我可以循环播放多个视频并获得我想要的结果。
它应该能够处理多个视频和输出:
[{"event_name":"video_completed","object_id":123456789}, {"event_name":"video_completed","object_id":123456789}]
Run Code Online (Sandbox Code Playgroud)
您想要首先组成一个 ruby 数组,然后将其转换为 JSON:
rules = videos.map do |video|
{
event_name: "video_completed",
object_id: video.image_hash.to_i
}
end
rules.to_json
Run Code Online (Sandbox Code Playgroud)
.each仅当您只关心循环的副作用而不是返回值时才应使用。
否则,您应该使用.map、等,这向其他程序员表明.inject您.each_with_object关心返回值。
| 归档时间: |
|
| 查看次数: |
3597 次 |
| 最近记录: |