gpt4 book ai didi

ruby-on-rails - 如何在 Rails View 中遍历数组?

转载 作者:数据小太阳 更新时间:2023-10-29 07:08:56 29 4
gpt4 key购买 nike

我在 MySql 中进行了查询,但在 Rails 和 mysql2 gem 中工作。

信息如下:

http://sqlfiddle.com/#!2/9adb8/6

查询工作正常,没有问题,并显示以下结果:

 UNIT  V1  A1  N1   V2 A2  N2   V3  A3  N3   V4  A4  N4   V5  A5  N5
LIFE 2 0 0 1 2 0 0 0 0 0 0 0 0 0 0
ROB 0 1 0 0 1 2 0 0 0 0 0 0 0 0 0

-为 rails 2.3.8 安装了 mysql2 gem

gem install mysql2 -v0.2.6

-创建 Controller :

class PolicyController < ApplicationController

def index
@result = ActiveRecord::Base.connection.execute("select distinct @sql := concat('SELECT pb.name as unit,',group_concat(concat('SUM(CASE WHEN p.state =0 AND ce.id=',id,' THEN 1 ELSE 0 END ) AS v',id,',SUM(CASE WHEN p.state =1 AND ce.id=',id,' THEN 1 ELSE 0 END ) AS a',id,',SUM(CASE WHEN p.state =2 AND ce.id=',id,' THEN 1 ELSE 0 END ) AS n',id)),' FROM cia_ensures ce LEFT JOIN policies p on ce.id = p.cia_ensure_id INNER JOIN policy_business_units pb ON pb.id = p.policy_business_unit_id INNER JOIN comercial_areas ca ON ca.id = pb.comercial_area_id AND ca.id=1 Group by p.policy_business_unit_id') from cia_ensures where id in(1,2,3,4,5);")
@result2 = ActiveRecord::Base.connection.execute("prepare stmt from @sql;")
@result3 = ActiveRecord::Base.connection.execute("execute stmt;")
end

end

这是日志:

SQL (0.9ms)   select distinct @sql := concat('SELECT pb.name as unit,',group_concat(concat('SUM(CASE WHEN p.state =0 AND ce.id=',id,' THEN 1 ELSE 0 END ) AS v',id,',SUM(CASE WHEN p.state =1 AND ce.id=',id,' THEN 1 ELSE 0 END ) AS a',id,',SUM(CASE WHEN p.state =2 AND ce.id=',id,' THEN 1 ELSE 0 END ) AS n',id)),' FROM cia_ensures ce LEFT JOIN policies p on ce.id = p.cia_ensure_id INNER JOIN policy_business_units pb ON pb.id = p.policy_business_unit_id INNER JOIN comercial_areas ca ON ca.id = pb.comercial_area_id AND ca.id=1 Group by p.policy_business_unit_id') from cia_ensures where id in(1,2,3,4,5);
SQL (0.9ms) prepare stmt from @sql;
SQL (0.2ms) execute stmt;

这是 View (工作正常,没有问题,但似乎太长了,多次编写相同的代码)

<table>
<% @result3.each do |policy| %>
<tr>
<td><%= policy[0] %></td>
<td><%= policy[1] %></td>
<td><%= policy[2] %></td>
<td><%= policy[3] %></td>
<td><%= policy[4] %></td>
<td><%= policy[5] %></td>
...
</tr>
<%end%>
</table>

我尝试使用 inspect,但它在一个 td 中显示所有信息,而不是在每个 td 中显示:

<% @result3.each do |policy| %>
<tr>
<td align="center"><%= policy.inspect %></td>
</tr>
<%end%>

如何在不写很多行的情况下显示所有这些内容?

是否可以在一行中完成此操作?不写 <%= policy[#NUMBER] %>

有人可以帮我吗?

我会非常感激。

最佳答案

嗯,可能误解了你的问题,因为它看起来很简单,你是想缩短这个吗?

改变:

<td><%= policy[0] %></td>
<td><%= policy[1] %></td>
<td><%= policy[2] %></td>
<td><%= policy[3] %></td>
<td><%= policy[4] %></td>
<td><%= policy[5] %></td>

收件人:

<% policy.each do |p| %>
<td><%= p %></td>
<% end %>

关于ruby-on-rails - 如何在 Rails View 中遍历数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23004125/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com