【Rails】如何用erb中的each转一个数组中的hash
Posted
技术标签:
【中文标题】【Rails】如何用erb中的each转一个数组中的hash【英文标题】:【Rails】How to turn a hash in an array with each in erb 【发布时间】:2022-01-21 06:41:59 【问题描述】:想要实现
红宝石 2.6.5 rails 6.0.3
感谢您的关注。 我正在 Rails 中创建一个网络应用程序。 我想知道您能否告诉我如何将多个表连接在一起,然后对每个表中的每个元素重复一次。
详情
从下表中,我们要获取与用户相关的任务以及与任务相关的信息(解决方案和拥有解决方案的公司名称),并将它们放入数组中的哈希中。
我想输出我们以这种方式创建的数组,一次一个,使用erb中的每个。
(我不知道如何在 EACH 中转一个任务,并且仍然在 EACH 中输出与该任务相关的公司名称和其他信息。)
像这样
A suitable solution for mike task "task1
・ Company name:Dcompany Solution:「solution2」
・ Company name:Ccompany Solution:「solution3」
A suitable solution for mike task "task1
・ Company name:Acompany Solution:「solution1」
表格
用户表
|id|name|
| 1|mike|
| 2|bob |
任务表
|id|task_name|user_id|
| 1|task1 | 1|
| 2|task2 | 1|
| 3|task3 | 2|
推荐表
|id|task_id|solution_id|
| 1| 1| 2|
| 2| 1| 3|
| 3| 2| 1|
解决方案表
|id|solution_name|company_id|
| 1| solution1| 1|
| 2| solution2| 4|
| 3| solution3| 3|
公司表
|id|name |
| 1|Acompany|
| 2|Bcompany|
| 3|Ccompany|
| 4|Dcompany|
试过
首先,我能够加入如下所示的表格,并将我想要的数据作为单个表格。 但是,我不知道如何从这里提取数据以及如何将其转过来,所以我放弃了。
tasks = user.eager_load(:tasks)
tasks = tasks.eager_load(:recommends)
tasks = tasks.eager_load(recommends: :solutions)
tasks = tasks.eager_load(recommends: solutions: :companies )
【问题讨论】:
【参考方案1】:这大概是我获得理想值的方式。
infos = []
users.each do |user|
info =
temporary_array = []
user.companies.each do |company|
end
info[:detail] = temporary_array
infos << info
end
【讨论】:
以上是关于【Rails】如何用erb中的each转一个数组中的hash的主要内容,如果未能解决你的问题,请参考以下文章
在 Rails 3 中处理 JS/ERB 模板中的 JSON