2
我有了兩個字段地點模型:如何在Mongoid&Rails中使用數組字段?
class Place
include Mongoid::Document
field :name, :type => String
field :loc, :type => Array
index([[:loc, Mongo::GEO2D]], :background => true)
validates_presence_of :name
end
我可以輕鬆地輸出緯度和經度在我的觀點:
@place.loc['lat']
MongoDB中表示每個地方的記錄是這樣的:
{ "_id" : ObjectId("0293uhjf2hfio2h3"),
"name" : "Starbucks",
"loc" : {
"lat" : 44.106667,
"lon" : -73.935833
}
}
我的問題是我怎麼可以創建一個表單,讓我來編輯或創建新的位置(經/緯度)字段?
就像任何其他形式。有問題嗎? – 2012-01-09 23:32:00
如果我創建一個名稱爲[loc] [lat]的輸入字段,則控制器的更新操作會返回一個錯誤:「字段被定義爲(n)數組,但接收到值爲」的ActiveSupport :: HashWithIndifferentAccess。如果我將loc的數據類型更改爲Hash,那麼即使我嘗試更改名稱字段,也不會有任何反應。不過,控制器確實表示該地點已成功更新,儘管事實並非如此。 – Vasily 2012-01-10 18:14:03
挖掘更長時間後,我發現update_attributes並不真正更新屬性,即使有新的屬性。如果我手動更改值並調用place.save,它可以工作。但這是一個非常糟糕的解決方案...所以,我會繼續尋找。 – Vasily 2012-01-10 19:01:08