[英]Adding value in loop of hash rails 5
I have the empty hash @task_data = Hash.new({task_name: '', updated_at: '', worked_by: ''})
我有空哈希
@task_data = Hash.new({task_name: '', updated_at: '', worked_by: ''})
Now I want to loop around the variable and adding the value into the hash @task_data something like below现在我想循环变量并将值添加到哈希@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
But when I displayed the value after the loop it's still empty.但是当我在循环后显示值时它仍然是空的。
I need something like @task_data = {1 => {task_name: '', updated_at: '', worked_by: ''}, 2 => {task_name: '', updated_at: '', worked_by: ''}, 3 => {task_name: '', updated_at: '', worked_by: ''}}
我需要类似
@task_data = {1 => {task_name: '', updated_at: '', worked_by: ''}, 2 => {task_name: '', updated_at: '', worked_by: ''}, 3 => {task_name: '', updated_at: '', worked_by: ''}}
Please help me请帮我
Ruby has functional style for more readable notation (see Enumerable#map
), also you can use safe navigation operator here: 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]}
Hash[tasks.map.with_index(1) do |task, idx| [idx, {task_name: task.task_name, updated_at: task.updated_at.strftime("%d/%m/%Y"), worked_by: task.task_timings.last.user.name}] ]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.