Rails从包含哈希的数组Array

时间:2016-09-01 18:22:16

标签: ruby-on-rails arrays ruby sorting ruby-on-rails-4

我有来自

的回复

{"Dates"=>[[{"DateString"=>"2016-09-01"}, {"DateString"=>"2016-09-02"}, {"DateString"=>"2016-09-03"}, {"DateString"=>"2016-09-04"}, {"DateString"=>"2016-09-05"}, {"DateString"=>"2016-09-06"}, {"DateString"=>"2016-09-07"}, {"DateString"=>"2016-09-08"}], [{"MinPrice"=>3669.0, "QuoteDateTime"=>"2016-09-01T12:49:10"}, {"MinPrice"=>3216.0, "QuoteDateTime"=>"2016-09-01T15:53:40"}, {"MinPrice"=>2668.0, "QuoteDateTime"=>"2016-09-01T13:48:21"}]], "Places"=>[{"PlaceId"=>42850, "...}

这是我的代码

<% @result["Dates"].each do |f| %>
    <% Array.wrap(f).each do |seg| %> 
        <%= seg['DateString'] %> - <%= seg['MinPrice'] %> 
        <br>
    <% end %>
<% end %>

这就像包含哈希的数组数组,但当我尝试同时提取DateStringMinPrice时,我得到的结果是这样的

2016-09-01 -  
2016-09-02 -  
2016-09-03 -  
2016-09-04 -  
2016-09-05 -  
2016-09-06 -  
2016-09-07 -  
2016-09-08 -  
- 3669.0  
- 3230.0  
- 2809.0  
- 2668.0  
- 3216.0  
- 2507.0  
- 3216.0  
- 2848.0  
- 3216.0  

我正在尝试的是这种安排

2016-09-01 - 3669.0  
2016-09-02 - 3230.0  
2016-09-03 - 2809.0  
2016-09-04 - 2668.0  

即,Datestring和Minprice一起

代码在哪里不正确?

另外,奇怪的是,如果代码重新排列如此 <%= seg['MinPrice'] %> - <%= seg['DateString'] %> <br>

它仍会显示如下

- 2016-09-01  
- 2016-09-02  
- 2016-09-03   
.  
.  
.    
3669.0 -  
3230.0 -  
2809.0 -   

为什么会这样?

1 个答案:

答案 0 :(得分:1)

这对你有用吗?

<% @result["Dates"][0].zip(@result["Dates"][1]).each do |f,a| %>
  <%= "#{f['DateString']} - #{a['MinPrice']}" if f && a %>
  <br>
<% end %>

它远非漂亮,但它可能是一个良好的开端。