我目前正在开发Rails / Mapbox应用程序。我目前不存储我的require 'net/protocol'
require 'uri'
module Net #:nodoc:
autoload :OpenSSL, 'openssl'
class HTTPBadResponse < StandardError; end
class HTTPHeaderSyntaxError < StandardError; end
...
def initialize(address, port = nil)
...
@read_timeout = 60
...
end
...
对象的地理位置,而是使用辅助方法创建临时实例变量来存储地理位置以传递给Mapbox。
下面,House
参数是一个包含许多all_houses
个对象的数组。
我创建了以下辅助方法:
House
我正在使用Gon Gem将此信息从我的控制器传递到Mapbox。返回的是一个数组数组,每个房子只存储地理位置。我要做的是传递为每个def add_geolocation(all_houses)
all_houses.map do |house|
house_geo = find_geolocation(house.address)
class << house
attr_accessor :geo
end
house.geo = house_geo
end
end
对象存储的每个实例变量,并传递其地理位置。
另外,要添加,我还尝试了Ruby方法Object#set_instance_variable,我得到了相同的结果。
我想要的是什么:
House
我得到的是一个只有地理位置的数组,例如:
[<House:0x007fe5670d9cc0 @a="a", @b="b", @geo=[10, 10]>, <House:0x007fe5670d9cc0 @a="a", @b="b", @geo=[10, 11]>, <House:0x007fe5670d9cc0 @a="a", @b="b", @geo=[12, -12]>, ...]
编辑:
以下是我控制器中的内容。 [[10, 10], [10, 11], [12, -12] ...]
来自Gon Gem
gon
答案 0 :(得分:3)
使用map
时,块的最后一行是隐式return语句,构造新数组。要返回修改后的房屋对象,house
必须是返回
def add_geolocation(all_houses)
all_houses.map do |house|
house_geo = find_geolocation(house.address)
class << house
attr_accessor :geo
end
house.geo = house_geo
house
end
end
编辑:你的控制器方法可能需要这样的东西
def index
@houses = House.all
json_houses = add_geolocation(House.all)
gon.houses = json_houses.as_json(methods: %i(geo))
end