Ruby on rails 轨内横向/纵向坐标插入,带形式_

Ruby on rails 轨内横向/纵向坐标插入,带形式_,ruby-on-rails,spatial,form-for,mysql2,rgeo,Ruby On Rails,Spatial,Form For,Mysql2,Rgeo,我使用的是Rails 4.4.1、Ruby 2.1.2、RGeo 0.3.20和activerecord-mysql2spatial-adapter 0.4.3 我的问题可能很简单,因为我对Ruby和Rails都是新手,但到目前为止,我在web上找不到任何有用的东西 我想创建一个表单在数据库中插入地理空间坐标,但我不知道如何访问:latlon字段x和y。这是我的暂定代码: <h1>Inserimento nuova Città</h1> <%= form_for @

我使用的是Rails 4.4.1、Ruby 2.1.2、RGeo 0.3.20和activerecord-mysql2spatial-adapter 0.4.3

我的问题可能很简单,因为我对Ruby和Rails都是新手,但到目前为止,我在web上找不到任何有用的东西

我想创建一个表单在数据库中插入地理空间坐标,但我不知道如何访问: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 %>

有人知道我如何创建一个表单来在数据库中插入latlon.x和latlon.y数据吗

您不能调用
city.number\u字段:latlon.y
,因为这里
:latlon
只是一个符号-它告诉助手调用“latlon”方法,并将名称设置为“city[latlon]”

解决此问题的一种方法是为各个x/y值添加get和set方法。这些可能已经存在,由宝石补充,我不知道,因为我没有使用它。但你可以加上

class City < ActiveRecord::Base
  def latlon_x
    self.latlon.x
  end

  def latlon_y
    self.latlon.y
  end

  def latlon_x=(num)
    self.latlon.x = num
  end

  def latlon_y=(num)
    self.latlon.y = num
  end
class City
现在你可以说,以你的形式

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



这将使用
latlon_x
获取值,并将导致在更新操作中执行
@city.update_属性(参数[:city])
时调用
latlon_x=

city.latlon
的值是多少?数据类型是point(),值应该是两个数值,es(43.11,12.38)。我现在找到了一个解决方法。我编辑了cities\u controller.rb,添加了工厂方法:
self.rgeo\u factory\u generator=rgeo::Geos.method(:factory)
,然后我修改了表单以处理文本输入:

,但现在要插入正确的值,用户必须写入点(43.11 12.38)。我仍在寻找一种解决方案,可以分别输入两个数字,而不需要任何文本“点”
    <%= city.number_field :latlon_x %><br>
    <%= city.number_field :latlon_y %><br>