0

Place モデルに座標を保存するためにMongoid Spacialを使用しています。クライアント側でジオコーディングを行い、緯度と経度の 2 つのテキスト フィールドを送信しています。フィールドの名前は正しく、Rails コンソールでも座標が黙って保持されないため、これはサーバー側の問題のようです。

モデル

class Place
  include Mongoid::Document
  include Mongoid::Paranoia
  include Mongoid::Timestamps
  include Mongoid::Spacial::Document

  attr_accessible :coordinates, :latitude, :longitude

  field :coordinates, type: Array, spacial: true

  spacial_index :coordinates

  def latitude
    coordinates[:lat]
  end

  def latitude=(latitude)
    self.coordinates[:lat] = latitude
  end

  def longitude
    coordinates[:lng]
  end

  def longitude=(longitude)
    self.coordinates[:lng] = longitude
  end
end

座標フィールドが配列であり、オブジェクトとして返されることを理解しています。

次のコマンドを使用して、座標を正常に設定できます。

self.coordinates = [-98.765432,12.345678]

ただし、次のコマンドではできません。

self.coordinates[:lng] = -98.765432

self.coordinates[0] = -98.765432

これを機能させるためにセッターを作成するにはどうすればよいですか?

4

1 に答える 1

0

これは実用的な解決策ですが、これを行うためのより良い方法は確かにあります。

  def latitude
    coordinates[:lat]
  end

  def latitude=(lat)
    self.coordinates = [self.longitude,lat]
  end

  def longitude
    coordinates[:lng]
  end

  def longitude=(lng)
    self.coordinates = [lng,self.latitude]
  end
于 2013-01-11T22:18:04.703 に答える