gpt4 book ai didi

elixir - Elixir Phoenix 中的可选 POST 参数

转载 作者:行者123 更新时间:2023-12-04 01:31:53 26 4
gpt4 key购买 nike

我有一个 phoenix 路由,我想将一些表单数据发布到其中,但是表单中有大约 4 个字段是可选的(表单是由最终用户构建的,因此这些字段可能不存在于 POST 有效负载中)

在路线的 Phoenix Controller 中,您将如何处理?

例如:

我的表格有

Field1,
Field2
Field3 (optional)
Field4 (optional)
Field5 (optional)

并且 POST 表单必须始终具有 Field1Field2但可以有其他字段的任意组合。

所以到目前为止我的 Controller 代码是这样的:
def create(conn, %{"field1" => field1, "field2" => field2) do
end

我如何使其他 3 个可选?如果我将它们全部添加进去,那么它们将是必需的,我不想为每个潜在的提交表单创建一个函数,因为这似乎有点矫枉过正。

最佳答案

Controller 接收到的参数只是一张 map ,所以你可能正在寻找类似 Map.get/3 的东西。 .使用这个函数,你可以在这些行上做一些事情:

def create(conn, %{"field1" => f1, "field2" => f2} = params) do
f3 = Map.get(params, "field3", "my default value")
# similar for the other fields
end

您还可以创建一个包含可选参数的所有默认值的映射,然后使用 Map.merge/2 :
@optional_params %{"field3" => "default3", "field4" => "default4"}

def create(conn, %{"field1" => f1, "field2" => f2} = params) do
# `params` has precedence over `@optional_params`, that's why we're using it
# as the second argument here.
params = Map.merge(@optional_params, params)
end

关于elixir - Elixir Phoenix 中的可选 POST 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30693765/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com