Rails 3:矩阵网格视图

时间:2011-07-28 21:44:15

标签: ruby-on-rails ruby-on-rails-3

我需要在表中显示多维数组数据,如下所示:

对于sla.expected_billing,有一个网格,左侧有12个句点(行)

顶部(列)的7个分类帐号

适用字段中的金额,但可能有空值

例如,

期间1:Ledger 1 = 400.00,Ledger 2 = null,Ledger 3 = 250.55,Ledger 4 = 500等。

期间2:Ledger 1 = null,Ledger 2 = null等等......

 class ExpectedBilling < ActiveRecord::Base
   belongs_to :sla
   belongs_to :period
   belongs_to :ledger  
 end

 class Period < ActiveRecord::Base
   has_many :expected_billings  
 end

 class Ledger < ActiveRecord::Base
   has_many :expected_billings  
 end

 class Sla < ActiveRecord::Base
   has_many :expected_billings  
 end

我认为Matrix库和/或Class.transpose可能是我需要的,但我不确定。当任何给定数组中可能存在空值时,我担心它也不会正确填充网格。

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

我会稍微改变它的模型:

 class Sla < ActiveRecord::Base
   has_one :expected_billing
 end

 class ExpectedBilling < ActiveRecord::Base
   has_many :periods
   belongs_to :sla
 end

 class Period < ActiveRecord::Base
   has_many :ledgers
   belongs_to :expected_billing
 end

 class Ledger < ActiveRecord::Base
   belongs_to :period
 end

要在视图中打印您的表格:

 <table>
   <!-- insert header row here -->
   <% sla.expected_billing.periods.each do |period| %>
     <tr>
       <!-- insert header column here -->
       <% period.ledgers.each do |ledger| %>
         <td><%= ledger.value %></td>
       <% end %>
     </tr>
   <% end %>
 </table>