Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

ActiveSupport | Object#to_param

概要

Object#to_param

詳細

Object#to_paramについて

Object#to_param

URLおよびクエリ文字列を作成する際に利用される。
基本はselfを返却する。
ArrayはURLを想定しているため、/区切りの文字列を返却する。
Hashはクエリー文字列を想定しているため、aaa='aaa'&bbb='bbb'&ccc='ccc'のような文字列を返却する。
Hash利用時に引数を指定すると、 "user[aaa]=aaa&user[bbb]=bbb"のようになる。(仮に引数に'user'を指定した場合)

サンプル

# encoding: utf-8
require "active_support/core_ext/object/to_param"
require "active_support/core_ext/object/to_query"
require "tbpgr_utils"

puts_eval '"hoge".to_param', binding
puts_eval '"".to_param', binding
puts_eval 'nil.to_param', binding
puts_eval 'true.to_param', binding
puts_eval 'false.to_param', binding
puts_eval '[:hoge, :hige].to_param', binding
puts_eval '{aaa: "aaa", bbb: "bbb", ccc: "ccc"}.to_param', binding
puts_eval '{aaa: "aaa", bbb: "bbb", ccc: "ccc"}.to_param("user")', binding

出力

"hoge".to_param # => "hoge"
"".to_param # => ""
nil.to_param # => nil
true.to_param # => true
false.to_param # => false
[:hoge, :hige].to_param # => "hoge/hige"
{aaa: "aaa", bbb: "bbb", ccc: "ccc"}.to_param # => "aaa=aaa&bbb=bbb&ccc=ccc"
{aaa: "aaa", bbb: "bbb", ccc: "ccc"}.to_param("user") # => "user%5Baaa%5D=aaa&user%5Bbbb%5D=bbb&user%5Bccc%5D=ccc"