通过可选的“inputs_for”输入的Phoenix嵌套表单会导致 Controller 中的 map 验证失败。因此,例如,帖子中有评论。如果我想在创建帖子时为帖子添加评论,则嵌套表单如下所示:

<%= form_for @changeset, @action, fn p -> %>
  <%= text_input p, :body %>
  <%= inputs_for p, :comments, fn c -> %>
    <%= text_input c, :body %>
  <% end %>
<% end %>

我填写了帖子正文,但是这次没有添加任何评论。这将为我们提供params [“post”] map 的 Controller
%{
  "body" => "My post",
  %{"comments" => %{"0" => %{"body" => ""}}
}

但是,注释是“可选的”。因此,为注释所做的验证将失败,因为有一个正文,但它为空。

然后的问题是,如果注释为空,如何删除/清理注释,但如果有一定价值,如何保留注释呢?清理参数“post”似乎并没有解决问题。

最佳答案

我猜您将不得不编写自己的scrub_comments function plug,它将从评论 map 中删除空评论,如果它为空,则最终将其删除。

关于phoenix-framework - 如何使用Phoenix框架处理可选的嵌套输入?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38042893/

10-15 23:20