此代码用于将字符串添加到messages变量,然后将它们发送回http响应。现在,什么都没有添加到messages变量中。 :ok和:error块中的代码行不再运行。我现在应该在哪里处理错误和成功案例,以添加有关错误和成功的消息?
messages = {}
changeset = Api.UserProduct.changeset(
user_product, %{:voted_vegan => true}
)
case Api.Repo.update(changeset) do
{:ok, product} ->
IO.puts("appending messages7")
messages = Tuple.append(messages, "Product updated")
{:error, changeset} ->
IO.puts("appending messages8")
messages = Tuple.append(messages, "Product not updated")
end
conn
|> put_resp_content_type("application/json")
|> send_resp(200, Poison.encode!(%{
successs: "success",
errors: Tuple.to_list(messages)
}))
答案 0 :(得分:1)
您的case表达式没有副作用,您应该将case表达式的返回值(将是执行分支中最后一个表达式的值)分配给messages
变量。
messages = {}
changeset =
Api.UserProduct.changeset(
user_product,
%{:voted_vegan => true}
)
messages =
case Api.Repo.update(changeset) do
{:ok, product} ->
IO.puts("appending messages7")
Tuple.append(messages, "Product updated")
{:error, changeset} ->
IO.puts("appending messages8")
Tuple.append(messages, "Product not updated")
end
conn
|> put_resp_content_type("application/json")
|> send_resp(
200,
Poison.encode!(%{
successs: "success",
errors: Tuple.to_list(messages)
})
)