ruby-on-rails - 在哈希轨道 5 的循环中添加价值
问题描述
我有空哈希 @task_data = Hash.new({task_name: '', updated_at: '', worked_by: ''})
现在我想循环变量并将值添加到哈希 @task_data 中,如下所示
i = 1
@tasks.each do |task|
@task_data[i][:task_name] = task.task_name
@task_data[i][:update_at] = task.updated_at.strftime("%d/%m/%Y")
if task.task_timings.present? && !task.task_timings.last.user_id.nil?
@task_data[i][:worked_by] = task.task_timings.last.user.name
else
@task_data[i][:worked_by] = ''
end
i = i+1
end
end
但是当我在循环之后显示值时,它仍然是空的。
我需要类似的东西@task_data = {1 => {task_name: '', updated_at: '', worked_by: ''}, 2 => {task_name: '', updated_at: '', worked_by: ''}, 3 => {task_name: '', updated_at: '', worked_by: ''}}
请帮我
解决方案
Ruby 具有函数式风格以获得更易读的符号(请参阅 参考资料Enumerable#map
),您也可以在此处使用安全导航运算符:
@task_data = @tasks.map do |task|
{
task_name: task.task_name,
update_at: task.updated_at.strftime("%d/%m/%Y"),
worked_by: task.task_timings.last&.user&.name || ''
}
end.each.with_index(1).to_h{|task,index| [index, task]}
推荐阅读
- azure - Azure 数据工厂 V2 动态内容
- c# - 我如何在 C# 中使用二进制搜索来获取通用列表
- sql-server - rowversion 是用于捕获表数据更改的事务一致值吗
- mongodb - Python2:我可以并行一个 for 循环来从 Mongo DB 中移动数据吗?
- reporting-services - 一位用户无法查看报告的完整数据
- javascript - 如何在 js 中手动触发 asp-validation 行为?
- javascript - Lodash if else 一行
- c# - Unity 与 PlayFab:如何将统计信息保存为整数
- c++ - 为什么在 if 语句中定义类型名称是可选的?
- python - 如何在两个不同的 numpy 字符串数组上测试行相似性(但不是等价性)