gpt4 book ai didi

elixir - 添加并显示带有 Phoenix.HTML.Form "With connection data"的错误消息

转载 作者:行者123 更新时间:2023-12-04 17:33:17 25 4
gpt4 key购买 nike

我有一个带有文本区域的简单表单,用户将在其中输入(或复制'n'粘贴)一个 json 字符串。表单将发送到我的 Controller 操作,我将验证 json 字符串,如果没问题,我将创建一些记录,一切都很好。

要将表单发送到我的 Controller 操作,我使用 Phoenix.HTML.Form目前“使用连接数据”,因此我没有模型/变更集。

<%= form_for @conn, @action, [as: :match], fn f -> %>
<%= textarea f, :json, rows: 20 %>
<%#= error_tag @changeset, f, :json %>
<% end %>

如果 json 由于某种原因无效,我想再次呈现表单并显示错误消息。 error_tag是一个 View 辅助方法,如果有变更集,它将在字段中显示错误。正因为如此,它现在被注释掉了。
def error_tag(form, field) do
if error = form.errors[field] do
content_tag :span, (humanize(field) <> " " <> translate_error(error)), class: "help-block"
end
end

def error_tag(changeset, form, field) do
if changeset.action do
error_tag(form, field)
end
end

添加错误以便我可以在表单字段中显示它们的正确方法是什么。我是否必须将错误添加到 @connf (表格)还是有其他方法可以得到?

最佳答案

在您的 Controller 模块中

创建一个关键字列表,其中包含操作内的错误

errors = [field: "error message"]

然后在调用 render 时传递它方法
render(conn, "template.html", errors: errors)

在您的 View 模块中

添加辅助函数以从关键字列表中提取和格式化消息
def error_tag(errors, field) when is_list(errors) and is_atom(field) do
case Keyword.fetch(errors, field) do
{:ok, message} -> content_tag :span, (humanize(field) <> " " <> translate_error(message)), class: "help-block"
:error -> html_escape("")
end
end

在您的模板文件中

显示错误信息
<%= form_for @conn, @action, [as: :match], fn f -> %>
<%= textarea f, :json, rows: 20 %>
<%= error_tag @errors, :json %>
<% end %>

关于elixir - 添加并显示带有 Phoenix.HTML.Form "With connection data"的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35700897/

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