2016-06-26 15 views
3

オプションの "inputs_for"を介したPhoenixネストフォーム入力は、検証に失敗したコントローラのマップになります。たとえば、投稿にはコメントがあります。私は、ポスト本体に記入したが、この頃コメントには何も追加しないフェニックスフレームワークでオプションのネストされた入力を処理する方法は?

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

:私はポストが作成されたときにポストにコメントを追加したい場合は、ネストされたフォームは次のようになります。それはしかし、コメントは「オプション」です私たちに

%{ 
    "body" => "My post", 
    %{"comments" => %{"0" => %{"body" => ""}} 
} 

のコントローラでのparams [「ポスト」]マップを提供します。したがって、本文があるのに空であるため、コメントの検証は失敗します。

コメントは空であればコメントを削除/消去しますが、値があればそれを保持するにはどうすればよいですか? params "post"のスクラブは、そのトリックをやっているようには見えません。

答えて

0

scrub_commentsfunction plugあなたはコメントマップから空のコメントを削除し、最終的にはコメントが空の場合は削除する必要があります。

関連する問題