我查看了许多其他 ruby 哈希/排序帖子,但似乎无法理解这一点。我有一个“工资单”哈希,它是通过在给定日期期间循环通过一组已完成工作的 ActiveRecord 构建的。有日期选择器可以选择往返日期,我想按工作时间最多的用户订购输出。
schedules = Schedule.where(:employer => employer_id).includes(:employee).order('date ASC')
@payrolls = Hash.new()
schedules.each do |p|
payrolls[p.employee.first_name] ||= {}
payrolls[p.employee.first_name]['money_earned'] = payrolls[p.employee.first_name]['money_earned'].to_f + p.money_earned.to_f
payrolls[p.employee.first_name]['hours_worked'] = payrolls[p.employee.first_name]['hours_worked'].to_f + p.hours_worked.to_f
end
@payrolls.sort_by { |k, v| v[:money_earned] }
我知道这可能有点像构建哈希的 PHP,但这是我在 PHP 开发 5 年后的第一个主要 Rails 项目。只要它有效就可以,但我不会拒绝更好的选择!
而我的观点,纯粹是为了测试时刻:
<% @payrolls.each do |key, value| %>
<div class="payroll_employee">
<%= key %> <%= value['money_earned'] %> <%= value['hours_worked'] %>
</div>
<% end %>
排序目前根本没有任何影响,无论我将其更改为以相同的顺序输出,我开始认为我错过了 Ruby 中哈希的一个主要(并且可能是显而易见的)部分。感谢您的任何建议。
编辑输出:(id,name,hours,earned)
1 | Tom Jones | 10.51 | 105.1
3 | Peter Griffen | 7.5 | 75.0
2 | Joseph Rogers | 6.2 | 62.0
4 | Weee Joss | 14.0 | 140.0