Как редактировать данные GeoJSON в представлении rails?

Я хочу иметь возможность редактировать данные GeoJSON в виде текста на странице редактирования. Я использую Rails, PostgreSQL с адаптером activerecord-postgis. Для кодирования данных я использую rgeo-geojson.

Мой вид шоу работает нормально, я кодирую:

<%= RGeo::GeoJSON.encode(@field.shape, json_parser: :json) %>

Но как обновить мое представление редактирования, чтобы я мог редактировать данные в формате GeoJSON и сохранять их:

<%= form_for :field, url: field_path(@field), method: :patch do |f| %>
...
  <p>
    <%= f.label :shape %><br>
    <%= f.text_area :shape %>
  </p>
...

<% end %>

Извините, если вопрос выглядит сумбурно


person Chmen Nalivnik    schedule 04.05.2017    source источник


Ответы (1)


Вы можете добавить в модель Field виртуальный атрибут, который будет преобразовывать столбец postgis db в GeoJSON и обратно:

class Field < ActiveRecord::Base
  def shape_text
    RGeo::GeoJSON.encode(shape).to_json
  end

  def shape_text=(text)
    self.shape = RGeo::GeoJSON.decode(text, json_parser: :json)
  end
end


<%= form_for :field, url: field_path(@field), method: :patch do |f| %>
...
  <p>
    <%= f.label :shape_text %><br>
    <%= f.text_area :shape_text %>
  </p>
...

<% end %>
person Ilya Lavrov    schedule 05.05.2017