【发布时间】:2018-12-23 17:12:04
【问题描述】:
我有一个带有文本区域的简单表单,用户可以在其中输入(或复制'n'粘贴)一个 json 字符串。表单将发送到我的控制器操作,我将验证 json 字符串,如果没问题,我将创建一些记录,一切都很好。
要将表单发送到我的控制器操作,我目前使用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 是一个视图辅助方法,如果有变更集,它将在字段中显示错误。正因为如此,它现在被注释掉了。
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
添加错误以便我可以在表单字段中显示它们的正确方法是什么。我必须将错误添加到@conn 或f(表单)还是有其他方法可以得到?
【问题讨论】:
-
我认为您可以在重新呈现表单之前将错误分配给控制器中的连接并访问表单中的错误,因为无论如何您都将连接传递给模板。