如果我有validate_required,如何防止错误显示在视图中?

时间:2016-08-22 13:52:46

标签: elixir phoenix-framework ecto

我在new.eex

中有这段代码
<%= if Enum.any?(@changeset.errors) do %>
  <%= rendering_code_is_here %>
<% end %>

if始终为真的问题,因为我的变更集有代码:

def changeset(struct, params) do
  struct
  |> cast(bla-bla)
  |> bla-bla-bla
  |> validate_required([:title])
end

所以,在我的控制器中我有:

  def new(conn, _params) do
    changeset = Content.changeset(%Content{})
    render conn, "new.html", changeset: changeset
  end

因此,它始终无效(title为零)。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

正如您所说,您的变更集始终会出错,因此rendering_code_is_here每次都会运行。

您需要检查的是,使用action字段对变更集执行action(例如Repo.insertRepo.update)后是否有任何错误

<%= if @changeset.action do %>
  <%= rendering_code_is_here %>
<% end %>