Sto tentando di utilizzare la libreria Geo per archiviare Geo.Point tramite il changeset del modello Phoenix. I miei parametri sono: {coordinates: [49.44, 17.87]}
o più preferiscono sarebbe {coordinates: {latitude: 49.44, longitude: 17.87}}
Come utilizzare la biblioteca geografica per creare un changeset Ecto Model valido?
In console iex ho provato:
iex(5)> changeset = Place.changeset(%Place{}, %{coordinates: [49.44, 17.87]})
%Ecto.Changeset{action: nil, changes: %{}, constraints: [],
errors: [coordinates: "is invalid"], filters: %{}
model: %Myapp.Place{__meta__: #Ecto.Schema.Metadata<:built>,
coordinates: nil, id: nil, inserted_at: nil, updated_at: nil}, optional: [],
opts: [], params: %{"coordinates" => [49.445614899999995, 17.875574099999998]},
repo: nil, required: [:coordinates],
Tutti gli altri tentativi conclusi da Poison.Parser errori.
Come dovrebbe apparire i parametri dal lato client per creare un changeset valido?
Modello:
defmodule MyApp.Place do
use MyApp.Web, :model
schema "place" do
field :coordinates, Geo.Point
timestamps
end
@required_fields ~w(coordinates)
@optional_fields ~w()
def changeset(model, params \\ :empty) do
model
|> cast(params, @required_fields, @optional_fields)
end
end
Puoi dirmi come posso mappare '{coordinate: {latitudine: 49.44, longitudine: 17.87}}' per estrarre 'latitudine' e' longitudine' in '% Geo.Point {}' nel giusto formato? – luzny
'% Geo.Point (coordinate: {get_in (coords_map.coordinates.latitude), get_in (coords_map.coordinates.longitude)})' http://elixir-lang.org/docs/stable/elixir/Kernel.html# get_in/2 – Gazler
quando ho più parametri come 'coords_map =% {nome:" test ", coordinate:% {latitudine: 49.44, longitudine: 17.87}}' Mi piacerebbe concat% Geo.Point per coordinate param, è per è un modo semplice? – luzny