A User
has_many emails
. In einem verschachtelten user#new
Formular kann ein neuer User
mit einem Email
erstellt werden. Durch das Senden dieses Formulars wird ein neues User
, aber nicht das zugehörige EMail
erstellt. Die create
Funktion erhält die richtigen Daten, aber erstellt nur die User
.Eine verschachtelte Ressource erstellen
Das Protokoll:
[info] POST /users
[debug] Processing by MyApp.UserController.create/2
Parameters: %{"_csrf_token" => "eUYYy4/aGeRCA==", "_utf8" => "✓",
"user" => %{"emails" => %{"0" => %{"value" => "[email protected]"}},
"first_name" => "John", "last_name" => "Smith"}}
web/controllers/user_controller.ex
[...]
def create(conn, %{"user" => user_params}) do
changeset = User.changeset(%User{}, user_params)
case Repo.insert(changeset) do
{:ok, user} ->
conn
|> put_flash(:info, "User created successfully.")
|> redirect(to: user_path(conn, :index))
{:error, changeset} ->
render(conn, "new.html", changeset: changeset)
end
end
[...]
Muss ich etwas in der Steuerung zu ändern, dies oder im Modell zu beheben? In Rails wäre es accepts_nested_attributes_for
.