【发布时间】:2011-06-19 11:26:28
【问题描述】:
我的哈希显示如下:
{"6"=>{":amount_paid"=>"100.00", ":date_paid"=>"4/22/2009"},
"0"=>{":amount_paid"=>"100.00", ":date_paid"=>"2/27/2008"},
"1"=>{":amount_paid"=>"80.00", ":date_paid"=>"3/27/2008"},
"2"=>{":amount_paid"=>"100.00", ":date_paid"=>"5/8/2008"},
"3"=>{":amount_paid"=>"100.00", ":date_paid"=>"6/20/2008"},
"4"=>{":amount_paid"=>"100.00", ":date_paid"=>"9/22/2008"},
"5"=>{":amount_paid"=>"100.00", ":date_paid"=>"2/20/2009"}}
当我用这个循环时,顺序对我很重要:
params[:payments].each_with_index do |item, idx|
通过这种方式,我可以添加之前的日期。
是否有一个循环可以找到"0".."6" 的序列并保持接近相同的语法?
我能想到的唯一其他选择是确保这些参数按顺序堆叠。它们来自这样的形式:
= text_field_tag "payments[0][:date_paid]"
= text_field_tag "payments[0][:amount_paid]"
= text_field_tag "payments[1][:date_paid]"
= text_field_tag "payments[1][:amount_paid]"
= submit_tag 'punch it chewy!'
【问题讨论】:
-
请注意,在 Ruby 1.9 中,哈希是有序的。在 Ruby 1.8 中,它们不是。如果在 1.8 中使用 Rails,您可以在需要排序时使用 ActiveSupport::OrderedHash 类。
-
"你可以在需要订单时使用 ActiveSupport::OrderedHash 类",请记住维护订单会产生开销。忽略顺序通常更快,然后在检索内容之前对键进行排序。
标签: ruby-on-rails ruby forms hash