Ruby on rails 比较散列值

Ruby on rails 比较散列值,ruby-on-rails,ruby,hash,Ruby On Rails,Ruby,Hash,在我的Ruby on Rails应用程序中,我有以下参数: {"0"=>{"from_days"=>"1", "to_days"=>"2", "netto_price"=>"1.0", "_destroy"=>"false", "id"=>"57"}, "1"=>{"from_days"=>"3", "to_days"=>"7", "netto_price"=>"23", "_destroy"=>"false"}, "2"=>

在我的Ruby on Rails应用程序中,我有以下参数:

{"0"=>{"from_days"=>"1", "to_days"=>"2", "netto_price"=>"1.0", "_destroy"=>"false", "id"=>"57"}, "1"=>{"from_days"=>"3", "to_days"=>"7", "netto_price"=>"23", "_destroy"=>"false"}, "2"=>{"from_days"=>"9", "to_days"=>"10", "netto_price"=>"123", "_destroy"=>"false"}} 
现在我想检查一下:

  • 1[:从\u天]>0[:到\u天]
  • 2[:从_天]>1[:到_天]
  • 等等
问题是,我想动态地执行它,因为将来这些参数会增长。有人知道如何解决这个问题吗?

您可以尝试以下方法:

params = {"0"=>{"from_days"=>"1", "to_days"=>"2", "netto_price"=>"1.0", "_destroy"=>"false", "id"=>"57"}, "1"=>{"from_days"=>"3", "to_days"=>"7", "netto_price"=>"23", "_destroy"=>"false"}, "2"=>{"from_days"=>"9", "to_days"=>"10", "netto_price"=>"123", "_destroy"=>"false"}}

(params.keys.min..params.keys.max).each do |index|
  if params[(index+1).to_s][:from_days].to_i > params[index.to_s][:to_days].to_i
    # your logic when 1[:from_days] > 0[:to_days] is true
  else

  end
end
此代码表示您的
params
hash:

  • 必须包含连续键(每个键之间没有间隙)
  • 必须包含具有
    [:from\u days]
    [:to\u days]
    键的哈希

感谢您的帮助,但这段代码给了我以下错误:没有将Fixnum隐式转换为String@MateuszUrbański我刚刚更新了我的答案,在
参数[index.to_s]
中添加了
.to_s
,我尝试了相同的解决方案,但仍然出现了相同的错误。