2016-07-02 44 views
0

現在、私たちはRubyのプロジェクトビルドにElixir APIを使用しています。また、Ecto検証を使用してパラメータを検証しています。そこに我々は、エラーを取得することができ、それを通してトラバース機能があるが、それは ruby​​とjsのjsonから文字列を抽出

"message": { 
    "to_date": [ 
     "can't be blank" 
    ], 
    "title": [ 
     "can't be blank" 
    ], 
    "requested_by": [ 
     "can't be blank" 
    ], 
    "from_date": [ 
     "can't be blank" 
    ], 
    "exid": [ 
     "can't be blank" 
    ] 
    } 
} 

良い形でこれらのメッセージを抽出するためにどのような方法がある

として送られてきましたの?彼らは exid can't be black

+0

どこにパラメータがありますか?それらはあなたのJSやあなたのRubyやElixerにありますか? –

+0

paramsは、JS AJAXとRubyラッパーの両方で送信されています。だから両方の解決策を求めているのです。エリキシル終点は単にメッセージ/データを返すだけです。メッセージの場合は、上記のようになります。 – ijunaidfarooq

答えて

0

ない、あなたが探している正確にわからとして表現されなければならないような。多分このような何か?

function sanitizeErrors(errs) { 
    var msg = errs.message; 
    var result = {}; 

    for (var key in msg) { 
    result[key] = key.replace('_', ' ') + ' ' + msg[key][0]; 
    } 

    return result; 
} 

あなたがここでそれを試すことができます。http://jsbin.com/saviyi/edit?js,console

をそれはこのようになりますオブジェクト生成:それはjavascriptをサポートしている場合は、JSONパーサーに建てられ、あなたのブラウザを使用して

{ 
    exid: "exid can't be blank", 
    from_date: "from date can't be blank", 
    requested_by: "requested by can't be blank", 
    title: "title can't be blank", 
    to_date: "to date can't be blank" 
} 
+0

thatsかなり素晴らしい! – ijunaidfarooq

+0

しかし、いずれにしても、私たちは '{message:" exitは空白にできません。 "}'などのようなものはありません。 – ijunaidfarooq

+0

フィールドあたりの最初のエラーを返します。最初のものを除くすべてのフィールドエラーを破棄したいのですか? (例: '{message: 'exidは空白にできません'})。そうすることはできますが、一般的に、エラーのある各フィールドを表示する必要があります。 –

0

を、あなたはあなたのメッセージを引数としてJSON.parseとすることができますし、これらの4つのうちの1つを私の頭の上から外します。同じ行の

  • アクセス、それをインチ
  • 別のjavascriptオブジェクトに挿入します。
  • あなたの呼び出し元に返します。
  • 繰り返します。

あなたのブラウザのコンソールでそれを試してみてください

b=JSON.parse('{"a":"b","7":0,"1":0,"0":1,"5":[1,5,8,6],"g":"Hello World"}').a 
#The string "b" 
b[7] # 0 
b[5] # an array with 1 5 8 and 6 
alert(b.g) 

のようにドット表記または、任意のイテレータとそれにアクセスすることができます!

角括弧を使用すると、配列の最初の要素として、各メッセージを取得する意味が、それは対処する超簡単です!

関連する問題