如何在 Phoenix Form 中传递具有 put_assoc 的变更集

How to pass changeset that has a put_assoc in Phoenix Form

如何以凤凰形式传递变更集?

这是控制器的一个片段:

def new(conn, _params) do changeset = Blog.change_post(%Post{}) render(conn, "new.html", changeset: changeset) end

但是我得到这个错误 key :user not found in: %{}

这是我的 post 变更集: def changeset(post, attrs) do post |> cast(attrs, [:title, :content, :is_published]) |> validate_required([:title, :content]) |> put_slug() |> put_assoc(:user, attrs.user) end

您的问题似乎是您的 "attrs" 没有密钥 :user 而您正试图在 "attrs.user".

行中访问它

如果我猜的话,我会说你应该像 "Blog.change_post(%Post{}, params)" 一样将参数传递给函数 "change_post",这样你就可以将这些参数传递给变更集的创建。