2017-01-25 8 views
0

に私は、Ajax PATCH呼び出しによって配列("[1,3,44,2,0]")を送信しています、そして、それはとして到着:チェック汚染チェックするには変換のparams配列(文字列)は、実際の整数配列

Parameters: {"ids"=>"[1,3,44,2,0]"} 

、私が使用しています次の行 - 文字列の開始と終了に対してで試合アンカーと、少なくとも1つの数字があることを確認する、または数字をコンマで区切り、その:

raise "unexpected ids #{params[:ids]}" unless params[:ids].match(/\A\[(\d+,)*\d+\]\z/) 

をそして実際の整数を作るために私は以下のアプローチを使用しています(整数に各文字列要素を変換し、コンマで分割、ブラケットを取り除く):

irb> "[1,3,44,2,0]"[1...-1].split(',').map {|e| e.to_i} 
=> [1, 3, 44, 2, 0] 

これを行うのより良い(単純、安価、速い)方法はありますか?

答えて

1

JSON.parse(params[:ids]) 

を試してみてくださいしかし、私はあなたのAjax呼び出しを確認するべきだと思います。配列を文字列として渡すことはできません。

+0

ありがとうございました!私の悪い!私はAjax呼び出しをチェックしましたが、配列を整数配列として渡したいのですが、実際にはJSON.stringifyを呼び出していました。私はそれを完全に忘れていました。私はそれを推薦する人物を読むので、私はそれをしました。それは悪い勧告だったのですか?整数の配列を渡すだけで何も問題はありませんか? – user664833

+0

何も間違っています;) – Ursus

関連する問題