2017-08-24 1 views
2

jsonデータをレンダリングしようとすると、コントローラで次のエラーが発生します。エラーを解決していないようだGET/apiでPoison.EncodeErrorが値をエンコードできません:{nil、 "paths"}

defmodule App.Api do 
    use App.Web, :model 

    @derive {Poison.Encoder, only: [:basePath, :definitions, :paths]} 
    schema "apis" do 
    field :basePath, :string 
    field :definitions, :string 
    has_many :paths, App.Path 

    timestamps() 
    end 
end 

Poison.EncodeError at GET /api 
unable to encode value: {nil, "paths"} 

web/controllers/api_controller.ex:1 App.ApiController.action/2 

は約検索した後、私はこのように私のモデルにしようとしました。私はこのように私のコントローラで私のパスフィールドをプリロードしようとした後、このエラーを得た:

defmodule App.ApiController do 
    use App.Web, :controller 

    alias App.Api 

    def index(conn, _params) do 
    apis = Repo.all(Api) |> Repo.preload(:paths) 
    render conn, "index.json", apis: apis 
    end 
end 

私はデータを挿入することができるよ、私のデータベースに見つけ、私はそれをすべてを照会することができます

Repo.all(Api) |> Repo.preload(:paths) 

他に何をしようと思っていますか?ありがとう

答えて

1

:pathsをあらかじめロードする場合は、Documentr2.Pathモジュールでもderiveを使用する必要があります。

@derive [Poison.Encoder] 

または

@derive {Poison.Encoder, only: [:field_you_want]} 
+0

あなたは魅力のように働いたありがとうございました。 –

関連する問題