読者です 読者をやめる 読者になる 読者になる

元フリーエンジニアライフ

Ruby on Rails とか MovableType とかAWSやってるフリーランスウェブエンジニアの記録でした。現在は法人成りしてIT社長。

Object#to_param / Object#to_query(key)

https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/object/conversions.rb https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/object/to_param.rb https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/object/to_query.rb ```ruby require 'active_support/core_ext/object/conversions' ``` で利用可能になるメソッド。 # to_param クエリパラメータ用の値の形に変換する。 key=valueの「value」の部分。 # to_query(key) `key`で指定したパラメータ名で取得できる、クエリパラメータの形に変換する。 ##基本 ``` key=val ``` ##配列 ``` key=val1&key=val2&key=val3` ``` ※実際にはブラケット``はURLエスケープされて`%5B%5D`となる ##ハッシュ ``` key[hashkey1]=val1&key[hashkey2]=val2&key[hashkey3]=val3 ``` ハッシュについては引数`key`を省略できて、ハッシュのキーと値がそのままクエリパラメータの名前と値に対応する文字列を返す。 ``` hashkey1=val1&hashkey2=val2&hashkey3=val3 ``` ※実際にはブラケット`[]`はURLエスケープされて`%5B%5D`となる #サンプルコード ```ruby require 'bundler/setup' require 'active_support/core_ext/object/conversions' require 'pp' val = 100 array = [1, 2, 3] hash = { hoge: 'fuga', val: 100 } date = Date.today # to_param pp val.to_param # => 100 pp array.to_param # => "1/2/3" pp hash.to_param # => "hoge=fuga&val=100" pp date.to_param # => "2014-04-02" # to_query pp val.to_query('val') # => "val=100" pp array.to_query('array') # => "array%5B%5D=1&array%5B%5D=2&array%5B%5D=3" pp hash.to_query('hash') # => "hash%5Bhoge%5D=fuga&hash%5Bval%5D=100" pp hash.to_query # => "hoge=fuga&val=100" pp date.to_query('date') # => "date=2014-04-02" ```