3

JavaScriptを使用して、ユーザー入力をハッシュの配列のように見える文字列に変換し、Railsフォームの非表示フィールドに渡します。つまり、このようなものが私のコントローラーに渡されます:

<input id="UserHash" name="UserHash" type="hidden" value="[{ :payer_id => 1, :amt => 90.00}, { :payer_id => 2, :amt => 80.00}, { :payer_id => 4, :amt => 20.00}]">

そして、私はeval(params[:UserHash])それを私が扱うことができるハッシュに変えるために使用しています。を使用してセキュリティを完全に侵害してeval()いますか?もしそうなら、渡された文字列がハッシュの配列であることを確認する方法はありますか?私がしていることについての入力をいただければ幸いです。JSを使用してハッシュの配列を渡す理由は、フォームが可変長コレクション(可変長の支払人のセット)に関するデータを収集するためです。

4

1 に答える 1

5

代わりにJSONを使用するのが最善の策です。

これはまさにJSONが設計されたシナリオです。JavascriptでJSON文字列を作成し、Rubyで解析します。

require 'json'

string = '[{"payer_id":1,"amt":90.0},{"payer_id":2,"amt":80.0},{"payer_id":4,"amt":20.0}]'
data = JSON.parse(string)

文字列をハッシュの配列に変換します。

 

キーを記号にしたい場合は、次を使用してください。

data = JSON.parse(string,:symbolize_names=>true)
于 2013-01-04T21:43:22.773 に答える