В моей модели поста я реализовал простую проверку
def changeset(model, params \\ :empty) do
model
|> cast(params, @required_fields, @optional_fields)
|> validate_length(:content, min: 2)
|> validate_length(:content, max: 500)
end
При отправке сообщения о создании формы представления я хотел бы показать ошибки, если что-то не так с отправкой пользователя, вот представление, которое отображает ошибку
<%= 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 %>
Я получаю эту ошибку (Protocol.UndefinedError) protocol Phoenix.HTML.Safe not implemented for {"should be at least %{count} character(s)", [count: 2]}
(phoenix_html) lib/phoenix_html/safe.ex:74: Phoenix.HTML.Safe.Tuple.to_iodata/1
Я не могу понять, почему это происходит, у меня была аналогичная проверка в другом приложении phoenix (также в документах phoenix), которая отлично работала.
Обновление. Предыдущее приложение использовало более старые версии Ecto и phoenix, в настоящее время я использую Ecto 2.0+ и Phoenix 1.1,