2017-01-05 5 views
0

私はフェニックスを新しくしました。いくつかのサンプルコードを使って作業する。私は私のコントローラに次の行を追加すると、私はまだを介して送信され、空の文字列を取得します:エリクサー - scrub_params

defmodule Rumbl.VideoController do 
    use Rumbl.Web, :controller 

    plug :scrub_params, "video" when action in [:create, :update] 

    ... 

end 

コンソールに出力さとスクラブラインなしで同じである:そこ

[debug] Processing by Rumbl.VideoController.create/2 
    Parameters: %{"_csrf_token" => "CCUkZDU1fE8nTy1tNRcHJVBYBkNPEAAApcT1sfHwwvd9bn3H85Ul7w==", "_utf8" => "Γ£ô", "video" => %{"description" => "", "title" => "", "url" => ""}} 
    Pipelines: [:browser, :authenticate_user] 

任意の考え?

+2

あなたの 'VideoController'に' scrub_params'プラグを追加しました。しかし、コンソールに表示された行は 'UserController'の行です。これを同じコントローラに追加しようとしましたか? –

+0

IO.メソッドの "ビデオ"を検査します。私はコンソールがあなたが "スクラブ"する前にあなたにパラームを表示すると思います。 –

答えて

0

プラグ:scrub_params、「ビデオ」でアクション[:、作成:更新]

HTMLフォームは、それは、そう空白の入力はフォームを介して送信されるたびにゼロの概念をされますがありません空の文字列としてPhoenixアプリケーションに到着します。アプリケーションをそのままにしておくと、空の文字列がアプリケーション全体に漏れるため、どこにでも空白文字列を区別することができます。

代わりに、scrub_params関数を使用して、境界でその問題を処理できるようにします。ユーザーの入力を扱うことは、私たちのコントローラーがやりたいことです。 scrub_paramsは空の文字列をチェックして、 "video"パラメータ内のデータに対してnilに変換し、より一様な方法でデータを扱うことができます。 scrub_params移動することが、これは、ページで100

:これはプログラミングフェニックス、第6章エクトクエリおよびジェネレータ(978-1-68050-145-2 ISBN-13)からなる

到着するビデオ属性の空の文字列はnilのみになります。あなたのログ出力は、scrub_params経由でnilに移動される前に、コントローラアクションに空の文字列属性を受け取ることを示しています。

ソース(HTMLフォームなど)が空の属性を送信する理由を確認する必要があります。

関連する問題