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共有する:) –