This article was migrated from http://rai
Railsを使っていると、formにActiveRcor
Railsのフォームヘルパーが生成したフォーム要素のnameやidを見てみると、"user[name]"のように、ARオブジェクトの属性名がマーシャリングされた状態で織り込まれています。
このようなフォームから送信されたリクエストの結果を解析して、paramsでアクセスできるように変換してくれるのがFormEncode
今回は、FormEncode
module FormEncode使用法:r def self.encod e(parameters , prefix = "") case parameters when Hash; encode_has h(parameters , prefix) when Array; encode_arr ay(parameters , prefix) else "#{prefix }=#{CGI.escape (parameters .to_s) }" end end private def self.encod e_hash(hash, prefix) hash.injec t([]) do |result, (key, value)| key = CGI.escape (key.to_s) result << encode(value, prefix.emp ty? ? key : "#{ prefix }[#{ key }]") end.join('&') end def self.encod e_array(array, prefix) array.inje ct([]) do |result, value| result << encode(value, "#{prefix }[]") end.join('&') end end
FormEncodeこれを使用することで、formから送信するのと同様な形式でさまざまな情報をQUERY_STRIr.encode :foo => {:bar => [1, 2], :baz => "Rails"} #=> "foo[baz]=Rails&foo[bar][]=1&foo[bar][]=2" CGIMethods .parse_que ry_paramet ers( "foo[baz]=Rails&foo[bar][]=1&foo[bar][]=2") #=> {"foo"=>{"baz"=>"Rails", "bar"=>["1", "2"]}}
[English]
This article was migrated from http://rai
posted by
genki
on Fri 2 Feb 2007
at 07:02