我对 ruby 和 rails 很陌生,我正在构建我的第一个应用程序。我有一个方法(enroll_again),它遍历所有代理合同并对它们进行排序,其中最快到期。此方法返回一个带有 [[Agentname, numdays]] 的二维数组。我正在尝试在更高级别上为所有帐户的所有合同运行此方法。
<% @accounts.each do |account| %>
<% account.contracts.enroll_again.each do |x,y| %>
<li>
<%= "#{y} Days remain on \n #{x}" %>
</li>
<%end%>
<%end%>
上面的代码返回特定于帐户的已排序元素列表,但整个列表仍未排序。我尝试将enroll_again 返回的所有元素放入一个单独的数组中,但我的语法一定是错误的,因为它总是返回一个空列表。
编辑 :
def self.enroll_again
d= Date.today
contract = Contract.all
temp = contract.map do |x|
[
Account.where(:accounts => { :id => x.account_id }).first.name),
((Date.strptime(x.startd,'%m/%d/%Y') + x.duration.months)-d).to_i
]
end
temp.sort_by{|x,y|y}
end