Elixir 在Phoenix框架表单中,我如何使用变更集将一个“属于”关系设置回null?
在Phoenix框架表单中,我的页面上有一个选择框,可以将一个属性值设置为nilElixir 在Phoenix框架表单中,我如何使用变更集将一个“属于”关系设置回null?,elixir,phoenix-framework,ecto,Elixir,Phoenix Framework,Ecto,在Phoenix框架表单中,我的页面上有一个选择框,可以将一个属性值设置为nil <%= select f, :relation_id, Enum.into(Enum.map(@relations, fn p -> {p.name, p.id} end), [{"None", nil}]) %> 我从Ecto收到一个错误,该变更集无效,因为它需要一个整数。我可能会截取映射,将值设置为null,然后将更新后的映射传递到变更集中。但是有更简单的方法吗?我想你应该使用插
<%= select f, :relation_id,
Enum.into(Enum.map(@relations, fn p -> {p.name, p.id} end),
[{"None", nil}]) %>
我从Ecto收到一个错误,该变更集无效,因为它需要一个整数。我可能会截取映射,将值设置为null,然后将更新后的映射传递到变更集中。但是有更简单的方法吗?我想你应该使用插头 尝试将以下内容添加到控制器:
defmodule MyApp.SomeThingController do
use MyApp.Web, :controller
plug :scrub_params, "some_thing" when action in [:create, :update]
# def ....
end
将”
(空)值转换为nil
值
希望有帮助。如何在控制器中预加载
关系
字段?找不到有关如何使用变更集执行此操作的示例。Thanksah-select只需要一个基本的元组列表,可以根据您的喜好生成。在本例中,@relations只是使用Repo.all:relations=Repo.all(relations\u query)直接拉取,然后通过render命令传递到视图中。
defmodule MyApp.SomeThingController do
use MyApp.Web, :controller
plug :scrub_params, "some_thing" when action in [:create, :update]
# def ....
end