创建嵌套资源

时间:2016-05-03 13:41:09

标签: elixir phoenix-framework

User has_many emails。在嵌套的user#new表单中,可以使用一个User创建新的Email。提交此表单会创建新的User,但不会创建关联的EMailcreate函数获取正确的数据,但只创建User

日志:

[info] POST /users
[debug] Processing by MyApp.UserController.create/2
  Parameters: %{"_csrf_token" => "eUYYy4/aGeRCA==", "_utf8" => "✓",
  "user" => %{"emails" => %{"0" => %{"value" => "john@example.com"}}, 
  "first_name" => "John", "last_name" => "Smith"}}

网络/控制器/ 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
[...]

我是否必须更改控制器中的某些内容以修复此问题或在模型中?在Rails中它将是accepts_nested_attributes_for

1 个答案:

答案 0 :(得分:1)

您只需要在IP Address random crap hiya intwer 10.90.11.252 dawd4 4654 14512 10.90.11.253 144 0 10.90.11.254 203

中添加对Ecto.Changeset.cast_assoc/3的来电

类似的东西:

User.changeset/2