Elixir Phoenix Phoenix.HTML.Safe未实现
在我的post模型上,我实现了一个简单的验证Elixir Phoenix Phoenix.HTML.Safe未实现,elixir,phoenix-framework,Elixir,Phoenix Framework,在我的post模型上,我实现了一个简单的验证 def changeset(model, params \\ :empty) do model |> cast(params, @required_fields, @optional_fields) |> validate_length(:content, min: 2) |> validate_length(:content, max: 500) end 在提交Post-create表单视
def changeset(model, params \\ :empty) do
model
|> cast(params, @required_fields, @optional_fields)
|> validate_length(:content, min: 2)
|> validate_length(:content, max: 500)
end
在提交Post-create表单视图时,如果用户提交有问题,我想显示错误,下面是呈现错误的视图
<%= form_for @changeset, @action, fn f -> %>
<%= if @changeset.action do %>
<div class="alert alert-danger">
<p>Oops, something went wrong! Please check the errors below:</p>
<ul>
<%= for {attr, message} <- f.errors do %>
<%IEx.pry%>
<li><%= humanize(attr) %> <%= message %></li>
<% end %>
</ul>
</div>
<% end %>
%>
哎呀,出问题了!请检查以下错误:
在变更集中显示错误消息的正确方法是使用
替换:
<li><%= humanize(attr) %> <%= message %></li>
谢谢,我没有意识到我的应用程序使用的是Ecto 2.0。我相信它是在Phoenix 1.1中与Gettext()一起添加的,与Ecto 2.0无关。我知道了,我是从旧版本的Phoenix复制了模板的,谢谢你可能也升级了Phoenix。我在Phoenix 1.1+Ecto 1.1.8应用程序上运行了上述“演示”。
<li><%= humanize(attr) %> <%= translate_error(message) %></li>
iex(1)> MyApp.ErrorHelpers.translate_error {"should be at least %{count} character(s)", [count: 2]}
"should be at least 2 character(s)"