1

ハッシュを配列に構築してから、それぞれを 1 つの大きな配列にプッシュしています。これは問題なく動作します (私は Gmaps4Rails を使用しています) が、もっと Ruby の方法があるのではないかと思っています。

def index   
  @allpoints = []
  @links = Link.find([1, 2, 3])
  @links.each do |link|
    linkpoints = []
    link.link_points.each do |pt|
      linkpoints << { :lat => pt.latitude, :lng => pt.longitude }
    end         
    @allpoints << linkpoints
  end
  @data = @allpoints.to_json    
end

解決策の編集:(私は以下のものを使用しました)元のものよりも短いですが、私の目には十分に読みやすくなっています:

def index
  all_points = []
  Link.find([1,2,3]).each do |link|
    all_points << link.link_points.map { |pt| { lat: pt.latitude, lng: pt.longitude } }
  end
  @data = all_points.to_json
end
4

2 に答える 2

0

map次の方法でリファクタリングできます。

@allpoints = Link.find([1, 2, 3]).map do |link|
  link.link_points.map do |pt|
    { :lat => pt.latitude, :lng => pt.longitude }
  end
end
于 2013-01-29T21:11:26.060 に答える