Don*_*ter 5 elixir ecto phoenix-framework
在Phoenix Framework表单中,我的页面上有一个选择框,可以选择将belongs_to值设置为nil.
<%= select f, :relation_id,
Enum.into(Enum.map(@relations, fn p -> {p.name, p.id} end),
[{"None", nil}]) %>
Run Code Online (Sandbox Code Playgroud)
表单通常会发送ID,但是当选择nil值时,它会将值作为空字符串传递:
"relation_id" => ""
Run Code Online (Sandbox Code Playgroud)
我从Ecto收到一个错误,即更改集无效,因为它需要一个整数.我可以拦截地图,将值设置为null,并将更新的地图传递给变更集.但有更简单的方法吗?
我认为你应该使用插头擦洗参数.
尝试添加到您的控制器:
defmodule MyApp.SomeThingController do
use MyApp.Web, :controller
plug :scrub_params, "some_thing" when action in [:create, :update]
# def ....
end
Run Code Online (Sandbox Code Playgroud)
它将转换""(空)值为nil值.
希望能帮助到你.