如何在 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",这样你就可以将这些参数传递给变更集的创建。
如何以凤凰形式传递变更集?
这是控制器的一个片段:
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",这样你就可以将这些参数传递给变更集的创建。