2017-02-01 6 views
1

で構造体にフィールドを追加する私は、アクションから復帰構造体へのフィールドまたはキーを追加したい:フェニックス/エリクシール

def show(conn, _) do 
    my_struct = Repo.get(MyStruc, 123) 
    render(conn, my_item: Map.put(my_struct, :aaa, "fdsfdsfds")) 
end 

私は「ショー」でそのフィールドを必要としています。 エラー:

key :aaa not found in: MyStruc {__meta__: .......... 

私は別の値として返すことができますが、私はそれが体mystructに埋め込ま返したいです。

+0

にあなたは 'MY_ITEMとの誤差があります。アイテム:Map.putを...'。このようにキーをアトムとして使用できるのは 'key::value'だけで、他の組み合わせでは使用できません。それだけではバグですか? – PatNowak

+0

どのようなコードがそのエラーを投げていますか?現在問題になっているコードにすることはできません。 – Dogbert

+0

@Dogbert、そうです。 – Torito

答えて

1
defmodule MyStruct do 
    use Ecto.Schema 
    schema "my_struct" do 
    ... all your fiels 
    field :aaa, :string, virtual: true 
    end 
end 

、あなたのコード

def show(conn, _) do 
    my_struct = Repo.get(MyStruc, 123) 
    render(conn, my_item: %MyStruct{my_struct | aaa: "fdsfdsfds"}) 
end