2016-05-03 3 views
2

Пользователь имеет сообщения__mail. Как я могу создать новый User и иметь один новый Email, вложенный в форму?Вложенная форма для ассоциации has_many

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 %> 
[...] 

Есть несколько StackOverflow вопросы по этому поводу, но никто не исправляет эту простую задачу.

ответ

2

В контроллере используется Ecto.Changeset.put_assoc/4:

alias MyApp.Email 

[...] 

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

Это создаст один пустой %Email со значениями по умолчанию и поместить его в :emails ассоциации ревизии.

Смежные вопросы