在Ecto Elixir中遍历错误后提取字符串

时间:2016-07-02 09:49:06

标签: elixir ecto

与在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"]}

1 个答案:

答案 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"]