所以我试图使用这个gem从Jira的rest API中解析出一些信息:https://github.com/sumoheavy/jira-ruby
我正在创建一个报告应用,它会计算特定“受让人”在特定项目中解决问题的次数。
哈希看起来像这样......
[#<JIRA::Resource::Issue:329487 @attrs={'key'=>'value','key'=>'value', "fields"=> {project=>{'key'=>'value'}, assignee=>{'key'=>'value'}}
我特别需要获得受让人的价值和项目的价值,然后以某种方式将它们列入一个表格,列出每个受让人,以及他们在每个项目中完成的问题。
由于我正在使用的查询,因此出现的问题只是已完成的问题,所以不要担心,只需解析它并使用模型中的某些方法对其进行计数。 / p>
我现在可以通过在视图中使用它来制作一个很好的解析表(不会得到我需要的信息)...
`<table>
<thead>
<th>Count</th>
<th>Issue Key</th>
<th>Summary</th>
<th>Time Estimate</th>
<th>Reporter</th>
<th>Assignee</th>
</thead>
<% @issues.each_with_index do |issue, index| %>
<tr>
<td><%= index + 1 %> </td>
<td><%= issue.key %> </td>
<td><%= issue.fields['summary'] %> </td>
<td><%= issue.fields['aggregatetimeestimate'] %> </td>
<td><%= issue.fields['reporter'].values[4] %> </td>
<% if issue.fields['assignee'].present? %>
<td><%= issue.fields['assignee'].values[4] %></td>
<% else %>
<td>N/A</td>
<% end %>
</tr>
<% end %>
</table>`
我更愿意看到的......是一个表,其中不同的受让人作为行,不同的项目作为列,然后是每个项目具有该特定受让人的问题的数量,然后是对。因此,我需要遍历所有受理人,组合所有相同的受理人,并计算列中每个项目的计数。
我不想使用activerecord,因为我没有保存到数据库。数据库是通过API检索的信息,因此它不断变化。
请记住,项目哈希,受理人哈希是他们自己的哈希,并且每个哈希在整个问题哈希中都有几个级别。 {问题哈希=&gt; {fields hash =&gt; {project hash} {assignee hash}}}
感谢您的帮助!
答案 0 :(得分:1)
试试这个:
# Controller
# {Assignee => {Project => Issues closed} }
@assignee_hash = Hash.new { |hash, key| hash[key] = Hash.new(0) }
@projects = Array.new
@issues.each do |issue|
# I'm not familiar with the structure of the assignee/project
# hashes here (and 'key'=>'value' isn't too descriptive),
# but these next 2 lines should be modified to access whatever
# value you want to identify the assignee and project by
assignee = issue.fields['assignee'].??
project = issue.fields['project'].??
@projects.push project unless projects.include? project
@assignee_hash[assignee][project] += 1
end
#View
<table>
<thead>
<th>Assignee</th>
<% @projects.each do |project| %>
<th><%= project %></th>
<% end %>
<th>Total</th>
</thead>
<% @assignee_hash.each do |assignee, project_hash| %>
<tr>
<td><%= assignee %></td>
<% @projects.each do |project| %>
<td><%= project_hash[project] %></td>
<% end %>
<td><%= project_hash.values.reduce(:+) %></td>
</tr>
<% end %>
</table>