我正在使用Rails 4.4.1,Ruby 2.1.2,RGeo 0.3.20和activerecord-mysql2spatial-adapter 0.4.3
我的问题可能很简单,因为我是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 %>
访问localhost时遇到的错误:3000 / cities / new url
undefined method `x' for :latlon:Symbol
任何人都知道如何创建表单以在我的数据库中插入latlon.x和latlon.y数据?
答案 0 :(得分:2)
您无法拨打city.number_field :latlon.y
,因为此处:latlon
只是一个符号 - 它告诉助手拨打&#34; latlon&#34;方法,并将名称设置为&#34; city [latlon]&#34;。
解决此问题的一种方法是为各个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
现在你可以用你的形式说,
<%= city.number_field :latlon_x %><br>
<%= city.number_field :latlon_y %><br>
这将使用latlon_x
来获取值,并在更新操作中执行latlon_x=
时调用@city.update_attributes(params[:city])
。