2014-06-06 66 views
2

我使用Rails 4.4.1,2.1.2紅寶石,RGeo 0.3.20和ActiveRecord的-mysql2spatial適配器0.4.3緯度/經度座標插入用的form_for在Rails的

我的問題很可能是因爲很簡單我對Ruby和Rails都很陌生,但到目前爲止我還找不到任何有用的東西。

我想創建一個表格中插入的地理空間座標在我的數據庫,但我不知道如何訪問:latlon域x和y。這是我的臨時代碼:

<h1>Inserimento nuova Città</h1> 
<%= form_for @city, url: cities_path do |city| %> 
    <p> 
     <%= city.label :name, "Nome"%><br> 
     <%= city.text_field :name %> 
    </p> 

    <p> 
     <%= city.label :latlon, "Coordinate GPS" %><br> 
     <%= city.number_field :latlon.x %><br> 
     <%= city.number_field :latlon.y %><br> 
    </p> 
<% end %> 

,當我訪問本地主機我得到的錯誤:3000 /城市/新的URL

undefined method `x' for :latlon:Symbol 

任何人都知道我該如何創建一個表單插入latlon。 x和latlon.y數據在我的數據庫?

+0

「city.latlon」的價值是多少? –

+0

數據類型爲point(http://daniel-azuma.com/articles/georails/part-3),值應該是兩個數值,es(43.11,12.38) – sparviero19

+0

我現在已經找到了解決方法。我編輯cities_controller.rb加入工廠方法: 'self.rgeo_factory_generator = RGeo :: Geos.method(:工廠)' 然後我已修改的form_for來處理文本輸入: '

<%= city.label :latlon,「座標GPS」%>
<%= city.text_field:latlon%>

' 但是現在要插入正確的值,用戶必須寫POINT(43.11 12.38)。我仍然在尋找一個解決方案來輸入兩個數字分離,沒有任何文字'POINT' – sparviero19

回答

2

您不能撥打city.number_field :latlon.y,因爲:latlon只是一個符號 - 它告訴助手調用「latlon」方法,並將名稱設置爲「city [latlon]」。

解決此問題的一種方法是爲各個x/y值添加get和set方法。這些可能已經存在,由寶石添加,我不知道,因爲我沒有用過它。但是,你可以添加

現在你可以說,你的形式,

<%= city.number_field :latlon_x %><br> 
    <%= city.number_field :latlon_y %><br> 

這將使用latlon_x獲得的價值,並會導致latlon_x=當您在更新做@city.update_attributes(params[:city])被稱爲行動。