1

だから私はウェブアプリを持っていて、問題を追跡する必要がある場合に備えて生のパラメータをデータベースに保存していますが、残念ながら元のフォームパラメータに戻っていくつかを並べ替えると便利な問題がありましたイベントへの出欠確認。

残念ながら、フォームにはネストされたフィールドがいくつかあり、それらを解析して戻すのは難しいことがわかっています。生のフォーム投稿の例を次に示します (データが難読化されています)。

{"utf8"=>"✓", "authenticity_token"=>"XXXX...=", "focus_group_invite_url_code"=>"XXXXXXX", "event_group_id"=>{"-1"=>""}, "event"=>{"id"=>"-1"}, "spouse"=>{"name"=>""}, "email"=>{"address"=>"XXXX@XXXX.com"}, "phone"=>{"number"=>"5555551212"}, "commit"=>"RSVP", "action"=>"create", "controller"=>"my_controller"}

ハッシュに分割するいくつかの方法を使用してみましたが、これらのいくつかのネストされた性質のために、これは難しいことがわかりました. URI.www_form_decode と ActiveSupport::JSON.decode も使用してみましたが、どちらも機能しませんでした。私が見逃しているこれを行う簡単な方法がなければならないと考えています。誰かに提案があることを願っています。

4

2 に答える 2

2

tyler の方法がこれで機能せず、インポートを信頼し、これは良い考えではないことを認める場合... eval は機能します。

1.9.3p327 > s = "{'one' => 1, 'two' => 2}"
 => "{'one' => 1, 'two' => 2}"
1.9.3p327 > h = eval(s)
 => {"one"=>1, "two"=>2}
1.9.3p327 > h.keys
 => ["one", "two"]
于 2013-07-25T21:48:48.417 に答える
2

具体的に何があなたを悩ませているのですか?

あなたが持っている場合

data = {"utf8"=>"✓", "authenticity_token"=>"XXXX...=", "focus_group_invite_url_code"=>"XXXXXXX", "event_group_id"=>{"-1"=>""}, "event"=>{"id"=>"-1"}, "spouse"=>{"name"=>""}, "email"=>{"address"=>"XXXX@XXXX.com"}, "phone"=>{"number"=>"5555551212"}, "commit"=>"RSVP", "action"=>"create", "controller"=>"my_controller"}

次のようなことができます

data["authenticity_token"] #=> "XXXX...="
data["event"]["id"] #=> "-1"
data["phone"]["number"].to_i #=> 5555551212

等々...

于 2013-07-25T21:47:00.957 に答える