与在Ecto中一样,我们有变更集,在无效变更集的情况下,我们可以根据Traverse error遍历错误。但是这给了我们一个非常复杂的JSON,比如
L"chrome"
我们不能在Elixir做一些事情,所以我们可以获得直接字符串,例如" Exid不能空白"或者诸如对象
{
"to_date": [
"can't be blank"
],
"title": [
"can't be blank"
],
"requested_by": [
"can't be blank"
],
"from_date": [
"can't be blank"
],
"exid": [
"can't be blank"
]
}
更新: 这是遍历错误后的结果
{
to_date: "to_date can't be bank"
}
有没有什么方法可以得到" exid不能空白"使用%{exid: ["can't be blank"], from_date: ["can't be blank"],
requested_by: ["can't be blank"], title: ["can't be blank"],
to_date: ["can't be blank"]}
?
答案 0 :(得分:0)
如果要将其转换为strigs列表,可以执行以下操作:
for {key, values} <- errors, value <- values, do: "#{key} #{value}"
演示:
iex(1)> errors = %{exid: ["can't be blank", "can't be something else"], from_date: ["can't be blank"],
...(1)> requested_by: ["can't be blank"], title: ["can't be blank"],
...(1)> to_date: ["can't be blank"]}
%{exid: ["can't be blank", "can't be something else"],
from_date: ["can't be blank"], requested_by: ["can't be blank"],
title: ["can't be blank"], to_date: ["can't be blank"]}
iex(2)> for {key, values} <- errors, value <- values, do: "#{key} #{value}"
["exid can't be blank", "exid can't be something else",
"from_date can't be blank", "requested_by can't be blank",
"title can't be blank", "to_date can't be blank"]