RAILS group_by此列或其他列

时间:2013-07-27 03:28:43

标签: ruby-on-rails

我想通过program_project_id或category_id

按一系列对象进行分组

我有一个控制分组的复选框。如果2个项目具有相同的program_project_id,则必须对其进行分组;如果2个项目具有相同的category_id,则必须对其进行分组。

这是我的第一个方法,只有program_project_id:

<% ppmp.items.where(combine_in_app: true).group_by(&:program_project_id).each do |s, pp| %>
    <% pp.each_with_index do |item, index| %>
        <tr class="greeny">
            <% case index when 0 %>
                <td><%= item.category.code %></td>
                <td class="no-space"><%= item.category.description%></td>
                <td><%= item.program_project.name %></td>
                <td><%= item.description %></td>
                <td><%= ppmp.pmo_end_user %></td>
                <td><%= item.type_of_procurement.name %></td>
                <td><%= item.mode_of_procurement.name %></td>
                <td><%= item.contract_type.name %></td>
                <td><%= item.app_ads_post.try(:strftime,'%d-%b-%y') %></td>
                <td><%= item.app_sl_eligibility_check.try(:strftime,'%d-%b-%y') %></td>
                <td><%= item.app_pre_bid_conf.try(:strftime,'%d-%b-%y') %></td>
                <td><%= item.app_eligibility_check.try(:strftime,'%d-%b-%y') %></td>
                <td><%= item.app_sub_open_bids.try(:strftime,'%d-%b-%y') %></td>
                <td><%= item.app_bid_eval.try(:strftime,'%d-%b-%y') %></td>
                <td><%= item.app_negotiations.try(:strftime,'%d-%b-%y') %></td>
                <td><%= item.app_post_qual.try(:strftime,'%d-%b-%y') %></td>
                <td><%= item.app_notice_award.try(:strftime,'%d-%b-%y') %></td>
                <td><%= item.app_contract_signing.try(:strftime,'%d-%b-%y') %></td>
                <td><%= item.app_notice_to_proceed.try(:strftime,'%d-%b-%y') %></td>
                <td><%= item.app_completion.try(:strftime,'%d-%b-%y') %></td>
                <td><%= item.app_acceptance_turnover.try(:strftime,'%d-%b-%y') %></td>
                <td class="no-space"><%= item.app_source_of_fund %></td>
                <td><div align="right"><%= number_with_precision(ppmp.combined_total_1,:precision=>2,:delimiter=>',') %></div></td>
                <td class="width-auto no-space"><%= item.app_remarks %></td>
                <td><%=link_to "#{ppmp.code}",ppmp %></td>
            <% else %>
                <td></td>
                <td></td>
                <td><%= item.program_project.name %></td>
                <td><%= item.description %></td> 
                <td><%= ppmp.pmo_end_user %></td>
                <td><%= item.type_of_procurement.name %></td>
                <td><%= item.mode_of_procurement.name %></td>
                <td><%= item.contract_type.name %></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td class="width-auto no-space"><%= item.app_remarks %></td>
                <td><%=link_to "#{ppmp.code}",ppmp %></td>
            <% end %>
        </tr>
    <% end %>
<% end %>

我尝试了另一种情况,但我做不到..

<% ppmp.items.where(combine_in_app: true).group_by{|x| [x.program_project_id, x.category_id]}.each do |s, pp| %>
    <% pp.each_with_index do |item, index| %>
        <tr class="greeny">
            <% case index when 0 %>
                <td><%= item.category.code %></td>
                <td class="no-space"><%= item.category.description%></td>
                <td><%= item.program_project.name %></td>
                <td><%= item.description %></td>
                <td><%= ppmp.pmo_end_user %></td>
                <td><%= item.type_of_procurement.name %></td>
                <td><%= item.mode_of_procurement.name %></td>
                <td><%= item.contract_type.name %></td>
                <td><%= item.app_ads_post.try(:strftime,'%d-%b-%y') %></td>
                <td><%= item.app_sl_eligibility_check.try(:strftime,'%d-%b-%y') %></td>
                <td><%= item.app_pre_bid_conf.try(:strftime,'%d-%b-%y') %></td>
                <td><%= item.app_eligibility_check.try(:strftime,'%d-%b-%y') %></td>
                <td><%= item.app_sub_open_bids.try(:strftime,'%d-%b-%y') %></td>
                <td><%= item.app_bid_eval.try(:strftime,'%d-%b-%y') %></td>
                <td><%= item.app_negotiations.try(:strftime,'%d-%b-%y') %></td>
                <td><%= item.app_post_qual.try(:strftime,'%d-%b-%y') %></td>
                <td><%= item.app_notice_award.try(:strftime,'%d-%b-%y') %></td>
                <td><%= item.app_contract_signing.try(:strftime,'%d-%b-%y') %></td>
                <td><%= item.app_notice_to_proceed.try(:strftime,'%d-%b-%y') %></td>
                <td><%= item.app_completion.try(:strftime,'%d-%b-%y') %></td>
                <td><%= item.app_acceptance_turnover.try(:strftime,'%d-%b-%y') %></td>
                <td class="no-space"><%= item.app_source_of_fund %></td>
                <td><div align="right"><%= number_with_precision(ppmp.combined_total_1,:precision=>2,:delimiter=>',') %></div></td>
                <td class="width-auto no-space"><%= item.app_remarks %></td>
                <td><%=link_to "#{ppmp.code}",ppmp %></td>
            <% else %>
                <td></td>
                <td></td>
                <td><%= item.program_project.name %></td>
                <td><%= item.description %></td> 
                <td><%= ppmp.pmo_end_user %></td>
                <td><%= item.type_of_procurement.name %></td>
                <td><%= item.mode_of_procurement.name %></td>
                <td><%= item.contract_type.name %></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td class="width-auto no-space"><%= item.app_remarks %></td>
                <td><%=link_to "#{ppmp.code}",ppmp %></td>
            <% end %>
        </tr>
    <% end %>
<% end %>

我尝过的其他人:

<% ppmp.items.where(combine_in_app: true).group_by{|x| [x.program_project_id || x.category_id]}.each do |s, pp| %>




<% ppmp.items.where(combine_in_app: true).group_by{|x| [x.program_project_id && x.category_id]}.each do |s, pp| %>

很抱歉,这是我第一次按照此列或其他列进行分组

0 个答案:

没有答案