当我在变更集中遇到一些验证错误时,我希望能够对最终用户说:" 信用卡不能为空白"或者某事更复杂,例如:" 您真棒信用卡不能为空白"。
简而言之,我想要同样的功能:http://gothamjs.io/documentation/1.0.0/validator#change-attributes
我没有在指南上找到类似的东西,所以我提出了这个:
error_helpers.ex
@doc """
Generates tag for inlined form input errors.
"""
def error_tag(form, field) do
if error = form.errors[field] do
content_tag :span, to_string(field) <> " " <> translate_error(error), class: "help-block"
end
end
你可以看到我刚刚添加了 to_string(字段)
我想我可以拿出一个带有gettext的hacky解决方案来翻译该字段以达到我的目标,但我认为这是一个很大的禁忌。
凤凰不提供开箱即用的东西吗? 如果没有,那么解决这个问题的最佳方法是什么?
答案 0 :(得分:3)
尝试使用生成器检查Phoenix如何做到这一点:
self.$addChild is not a function
要添加错误,您需要检查两个地方。第一个是模型。在变更集功能中,您可以添加:
mix phoenix.gen.html User users name credit_card
当validate_length(:credit_card, min: 1, message: "your awesome credit card...")
字段为空时,这会向给定消息添加验证错误。
第二个是模板:你需要使用:
:credit_card
<%= form_for @changeset, @actoin, fn f -> %>
<%= if @changeset.action do %>
<div class="alert alert-danger">
<p>Something wrong</p>
</div>
<% end %>
<div class="form-group">
<%= label f, :credit_card %>
<%= text_input f, :credit_card %>
<%= error_tag f, :credit_card %>
</div>
<% end %>
将确保您的错误出现在应有的位置。如果您需要翻译错误消息,可以在模型中使用error_tag
。
您可能不必触摸生成的控制器。