0
我目前正在使用Rails/Mapbox應用程序。我目前沒有爲我的House
對象存儲地理位置,而是使用助手方法創建臨時實例變量來存儲傳遞到Mapbox的地理位置。使用enumerable#map添加實例變量返回錯誤信息
以下,all_houses
參數是許多House
對象的數組。
我創建了下面的helper方法:
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
我使用的是剛創業板通過從我的控制器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]>, ...]
我所得到的是陣列的只有geolocations陣列,例如:
[[10, 10], [10, 11], [12, -12] ...]
編輯:
下面是我在我的控制器。 gon
是從剛寶石
def index
@houses = House.all
json_houses = add_geolocation(House.all)
gon.houses = json_houses
end
謝謝你的回覆。我嘗試在'map'塊中返回房子,現在我們返回了一個數組中沒有'geo'屬性的所有'House'對象。 –
我對'gon' gem不熟悉,但我懷疑發生了什麼,它是使用'to_json'序列化模型,這將不幸地遺漏掉那些動態添加到模型中的變量。相反,您可以使用'as_json'來指定還應該包含這個附加屬性。我用一個例子更新了答案。 –
太棒了!謝謝你,該解決方案的工作原理和傳遞所有信息 –