1

我有一个字段“位置”,它是一个数组 [lng, lat]。

我在ActiveAdmin表单中有两个输入字段,定义如下

f.inputs :name => "Location" do
  f.input :latitude
  f.input :longitude
end

为了获得纬度和经度,我在模型中定义了两个吸气剂:

def latitude
  location[1]
end

def longitude
  location[0]
end

表单按预期显示。

为了保存这些值,我在模型中创建了两个 setter

def latitude=(lat)
  self[:location][1] = lat.to_f
end

def longitude=(lon)
  self[:location][0] = lon.to_f
end

在表单提交之后,这些方法被调用,但值不会被持久化。

我错过了什么吗?

4

1 回答 1

0

我找到了解决方案。当我使用 set() 时,它起作用了。保存和 update_attribute - 没有。

def latitude=(lat)
  self[:location][1] = lat.to_f
  self.set :location, self[:location]
end

def longitude=(lon)
  self[:location][0] = lon.to_f
  self.set :location, self[:location]
end
于 2012-08-11T20:44:56.477 回答