Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 在Phoenix框架表单中,我如何使用变更集将一个“属于”关系设置回null?_Elixir_Phoenix Framework_Ecto - Fatal编程技术网

Elixir 在Phoenix框架表单中,我如何使用变更集将一个“属于”关系设置回null?

Elixir 在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,然后将更新后的映射传递到变更集中。但是有更简单的方法吗?我想你应该使用插

在Phoenix框架表单中,我的页面上有一个选择框,可以将一个属性值设置为nil

<%= 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