我在我的插件 (/views/reports/_details.rhtml) 中覆盖了 Redmine 核心视图。只是为了打印一些额外的数据,比如有多少未分配的问题被分配和未分配。
我试图改写控制器并添加一个方法来执行此操作,但我从来没有让它工作,所以我将下面的代码添加到视图中(是的,它很难看,但页面很少被使用)。
现在我的问题是,视图在所有跟踪器(row.id)中循环并显示信息,比如有多少问题是打开和关闭的。所以我添加了一个额外的 SQL 查询,但它只适用于第一个跟踪器迭代,其余的它一遍又一遍地显示相同的数据。
当我查看 development.log 时,其中只有一个 SQL 查询。但是当我输出 row.id (<%= row.id %>) 时,它会显示每个跟踪器的正确值。
我应该如何解决这个问题?
_details.rhtml 中的代码
<% @total_assigned_and_open ||=
ActiveRecord::Base.connection.select_all("select count(i.id) as total
from
#{Issue.table_name} i, #{IssueStatus.table_name} s, #{Tracker.table_name} t
where
i.status_id=s.id
and i.tracker_id=#{row.id}
and i.project_id=#{@project.id}
and i.assigned_to_id is null
and s.is_closed = 0
group by s.id, s.is_closed, t.id limit 1") %>
development.log 中的 SQL 查询
select count(i.id) as total
from
issues i, issue_statuses s, trackers t
where
i.status_id=s.id
and i.tracker_id=1
and i.project_id=1
and i.assigned_to_id is null
and s.is_closed = 0
group by s.id, s.is_closed, t.id limit 1
(以前从未使用过 Ruby on Rails 或 Redmine...)