2016-08-03 19 views
2

私は日付を解析してテーブルに保存しようとしています。ここでは機能があります:Elixir/Phoenix/Timex:プロトコルTimex.Protocolが実装されていません:エラー

defp string_to_datetime(string) do 
    result = string 
      |> String.split(";") 
      |> List.last 
      |> Timex.parse("{0M}/{0D}/{YYYY} {h12}:{m} {AM}") 
    case result do 
    {dt, _} -> dt 
    :error -> nil 
    end 
end 

文字列は、開始時にいくつかのスクラブを必要とするが、私はこの分野にそれを保存しようとすると、私はエラーを取得する:

field :first_appointment, Timex.Ecto.DateTime 

ここでエラーです:

** (exit) an exception was raised: 
    ** (Protocol.UndefinedError) protocol Timex.Protocol not implemented for :error 
     (timex) lib/protocol.ex:1: Timex.Protocol.impl_for!/1 
     (timex) lib/protocol.ex:36: Timex.Protocol.to_datetime/2 

どういう意味かはっきりしません。何か案は?

答えて

2

Timex.parse/2を期待します。このような結果あなたのケースを変更する必要が{:ok, dt}または{:error, reason}

のいずれかを返す:

case result do 
    {:ok, dt} -> dt 
    {:error, reason} -> IO.inspect reason 
end 

これは、タイメックスの実装からである:

@spec parse(String.t, String.t) :: {:ok, DateTime.t | NaiveDateTime.t} | {:error, term} 
+0

ああ、ありがとう、あなたを!エリクシールにまったく新しい。 –

関連する問題