2

プラグイン (/views/reports/_details.rhtml) で Redmine コア ビューをオーバーライドしています。割り当てられている未解決の問題の数など、追加のデータを印刷するだけです。

代わりにコントローラーをオーバーライドしてこれを行うメソッドを追加しようとしましたが、うまくいかなかったので、以下のコードをビューに追加しました (はい、醜いですが、ページが使用されることはめったにありません)。

今私の問題に、ビューはすべてのトラッカー (row.id) をループして、開いている問題と閉じている問題の数などの情報を表示しています。そのため、追加の SQL クエリを追加しましたが、最初のトラッカー イテレーションでのみ機能し、残りは同じデータを何度も表示します。

development.log を見ると、SQL クエリが 1 つしかありません。しかし、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 を使用したことはありません...)

4

1 に答える 1

0

選択したプロジェクトにすべての課題を選択する 2 つの SQL クエリ (ビュー内) を追加することで解決しました。

<% @all_unsigned_issues ||=
ActiveRecord::Base.connection.select_all("select i.status_id as status, s.is_closed as 
closed, t.id as tracker_id, count(i.id) as total
from
#{Issue.table_name} i, #{IssueStatus.table_name} s, #{Tracker.table_name} t 
where
i.assigned_to_id is null
and i.project_id=#{@project.id}
and i.status_id=s.id
and i.tracker_id=t.id
group by i.id") %>

それから私は使います。

<%= aggregate_link @all_unsigned_issues, { "tracker_id" => row.id, "status" => 5 },
            :controller => 'issues', :action => 'index', :project_id => ((row.is_a?(Project) ? row : @project)) %>
于 2009-11-27T13:08:52.857 に答える