Adding an instance variable using enumerable#map returns 错误信息
Adding an instance variable using enumerable#map returns wrong information
我目前正在开发 Rails/Mapbox 应用程序。我目前没有为我的 House
对象存储地理位置,而是使用辅助方法创建一个临时实例变量来存储要传递给 Mapbox 的地理位置。
下面,all_houses
参数是许多 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
end
end
我正在使用 Gon Gem 将此信息从我的控制器传递到 Mapbox。返回的是一组数组,其中仅存储了每个房屋的地理位置。我想要做的是传递为每个 House
对象存储的每个实例变量,并传递其地理位置。
此外,补充一下,我也尝试了 Ruby 方法 Object#set_instance_variable,我得到了相同的结果。
我想要的:
[<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
def index
@houses = House.all
json_houses = add_geolocation(House.all)
gon.houses = json_houses
end
当使用 map
时,块的最后一行是构造新数组的隐式 return 语句。要 return 修改的房屋对象,house
需要是 return
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
我目前正在开发 Rails/Mapbox 应用程序。我目前没有为我的 House
对象存储地理位置,而是使用辅助方法创建一个临时实例变量来存储要传递给 Mapbox 的地理位置。
下面,all_houses
参数是许多 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
end
end
我正在使用 Gon Gem 将此信息从我的控制器传递到 Mapbox。返回的是一组数组,其中仅存储了每个房屋的地理位置。我想要做的是传递为每个 House
对象存储的每个实例变量,并传递其地理位置。
此外,补充一下,我也尝试了 Ruby 方法 Object#set_instance_variable,我得到了相同的结果。
我想要的:
[<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
def index
@houses = House.all
json_houses = add_geolocation(House.all)
gon.houses = json_houses
end
当使用 map
时,块的最后一行是构造新数组的隐式 return 语句。要 return 修改的房屋对象,house
需要是 return
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