2
如何將接收到的標記座標保存爲json參數並將其構建到具有正確值的lat和lng字段?我試圖在很多方面做到這一點,但它給了每個人失敗。低於那些在我看來最接近的是好的。如何將數據從json數組保存到數據庫MongoDB?
#controller:
def create
@user = User.new()
received_json = ["{\"lat\":52.38521483550798,\"lng\":16.866459809082016}", "{\"lat\":52.40458894240522,\"lng\":16.856503449218735}", "{\"lat\":52.42605757375466,\"lng\":16.86989303662108}"]
# objArray=JSON.parse(received_json.to_json)
objArray=ActiveSupport::JSON.decode(received_json.to_json)
#example 1
objArray.each do |obj|
@user.markers.build(obj)
end
# NoMethodError (undefined method `each_pair' for "{\"lat\":52.38521483550798,\"lng\":16.866459809082016}":String):
#example 2
objArray.each do |obj, value|
@user.markers.build(obj=>value)
end
# BSON::InvalidKeyName ({"lat":52.38521483550798,"lng":16.866459809082016} - key must not contain '.'):
#example 3
objArray.each do |obj|
@user.markers.build(lat:obj)
end
# This approach save data but in one field lat in user markers array
# Data Saved: {"_id":"4e9eac161e7bf208280002fb","markers":[{"_id":"4e9eac161e7bf208280002fc","lat":"{\"lat\":52.38521483550798,\"lng\":16.866459809082016}"},{"_id":"4e9eac161e7bf208280002fd","lat":"{\"lat\":52.40458894240522,\"lng\":16.856503449218735}"},{"_id":"4e9eac161e7bf208280002fe","lat":"{\"lat\":52.42605757375466,\"lng\":16.86989303662108}"}]}
end
#model
class User
include Mongoid::Document
field :name, :type => String
embeds_many :markers, :inverse_of => :user
end
class Marker
include Mongoid::Document
field :lat, :type => Float
field :lng, :type => Float
embedded_in :user, :inverse_of => :marker
end
您的幫助超級感謝! – leon
沒有提到friend.Just分享我所知道的:) –