Ruby on rails Ruby/Rails将哈希数组推送到数组的方法
我将散列构建到一个数组中,然后将每个散列推到一个大数组中。这很好用(我使用的是Gmaps4Rails),但我想知道是否有一种更适合Ruby的方法Ruby on rails Ruby/Rails将哈希数组推送到数组的方法,ruby-on-rails,ruby,gmaps4rails,Ruby On Rails,Ruby,Gmaps4rails,我将散列构建到一个数组中,然后将每个散列推到一个大数组中。这很好用(我使用的是Gmaps4Rails),但我想知道是否有一种更适合Ruby的方法 def index @allpoints = [] @links = Link.find([1, 2, 3]) @links.each do |link| linkpoints = [] link.link_points.each do |pt| linkpoints << { :lat =&g
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索引
@所有点=[]
@links=Link.find([1,2,3])
@links.each do | link|
链接点=[]
link.link_points.each do|pt|
链接点点纬度:lng=>pt.longitude}
结束
@allpoints首先:您不需要创建大量的@变量
。视图中不使用的(控制器动作的局部变量)应该是经典的局部变量
Second:您可以像这样重构您的操作:
@data = Link.find([1,2,3]).map do |link|
link.link_points.map{ |pt| {lat: pt.latitude, lng: pt.longitude} }
end.to_json
如果上面的代码没有预期的行为和输出,请告诉我。可以使用map
下一步进行重构:
@allpoints = Link.find([1, 2, 3]).map do |link|
link.link_points.map do |pt|
{ :lat => pt.latitude, :lng => pt.longitude }
end
end
如果没有别的,考虑使用<代码>收藏夹<代码>。Link kPosits是一个Hastho与链接的关联吗?是的,一个链接有很多链接点,那么也许你想使用快速加载:我正在使用一个解决方案。顺便说一句,你的问题解决起来很有趣:)“我正在研究一个使用它的解决方案”:只需添加Link.includes(:Link_points)。find([1,2,3])
我喜欢你使用Link.find([1,2,3])的第一种/第二种方法。然后分别映射。你当前编辑的方式创建了一个额外的数组。是的,这个版本可以工作,但我仍然喜欢你的第一个,因为它对我来说更有意义,我会在我的原始帖子中编辑它,但你会得到答案。就个人而言,太多的地图让人困惑。非常有趣-你用另一个答案中的我的代码替换了你的代码,并获得了接受奖..不,我没有@Mik_死。我首先发布了Yeenow123在其答案中发布的版本(使用all_point=[]
),然后用较短的版本更新了我的答案。很抱歉,如果提问者喜欢我答案的第一个版本。。。
@allpoints = Link.find([1, 2, 3]).map do |link|
link.link_points.map do |pt|
{ :lat => pt.latitude, :lng => pt.longitude }
end
end