【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

Rails update.js.erb 不执行 javascript

Rails 6:Ajax 不接受 js.erb 中的渲染

如何用setData修改数组

如何用rails制作授权系统?

Rails 不使用 application.html.erb