Elixir 的嵌套表单有许多关联
一个用户有很多电子邮件。如何创建新的Elixir 的嵌套表单有许多关联,elixir,phoenix-framework,Elixir,Phoenix Framework,一个用户有很多电子邮件。如何创建新的用户,并在表单中嵌套一封新的电子邮件 user\u controller.ex [...] def new(conn, _params) do changeset = User.changeset(%User{}) render(conn, "new.html", changeset: changeset) end [...] [...] <%= inputs_for f, :emails, fn ef -> %> <di
用户
,并在表单中嵌套一封新的电子邮件
user\u controller.ex
[...]
def new(conn, _params) do
changeset = User.changeset(%User{})
render(conn, "new.html", changeset: changeset)
end
[...]
[...]
<%= 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 %>
[...]
form.html.eex
[...]
def new(conn, _params) do
changeset = User.changeset(%User{})
render(conn, "new.html", changeset: changeset)
end
[...]
[...]
<%= 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问题,但没有一个解决这个简单的问题。在控制器中,使用
exto.Changeset.put\u assoc/4
:
alias MyApp.Email
[...]
changeset =
User.changeset(%User{})
|> Ecto.Changeset.put_assoc(:emails, [%Email{}])
render(conn, "new.html", changeset: changeset)
这将创建一封带有默认值的空%Email
,并将其放入变更集的:Email
关联中