2016-05-03 16 views
2

Ein Benutzer has_many E-Mails. Wie kann ich eine neue User erstellen und eine einzige neue Email im Formular verschachtelt haben?verschachteltes Formular für has_many association

user_controller.ex

[...] 
def new(conn, _params) do 
    changeset = User.changeset(%User{}) 
    render(conn, "new.html", changeset: changeset) 
end 
[...] 

form.html.eex

[...] 
<%= inputs_for f, :emails, fn ef -> %> 
    <div class="form-group"> 
    <%= label ef, :value, class: "control-label" %> 
    <%= text_input ef, :value, class: "form-control" %> 
    <%= error_tag ef, :value %> 
    </div> 
<% end %> 
[...] 

Es gibt ein paar Fragen zu Stackoverflow dies aber nicht behebt dieses Problem einfach.

Antwort

2

Im Regler verwenden Ecto.Changeset.put_assoc/4:

alias MyApp.Email 

[...] 

changeset = 
    User.changeset(%User{}) 
    |> Ecto.Changeset.put_assoc(:emails, [%Email{}]) 
render(conn, "new.html", changeset: changeset) 

Dies wird eine leeres %Email mit Standardwerten erstellen und es in dem :emails Verband des changeset setzen.

Verwandte Themen