link_toやlink_to_remote、っていうか、
url_forにハッシュをつけることで、パラメータを渡せることは周知の事なんだけど、これに配列を渡せないか、
というのが今回のお題。
前に書いたエントリは真っ赤な嘘でした。ごめんなさい
フォームヘルパ系のパラメータであれば、
パラメータ名に[]をつけてやれば配列で渡せるのは
このエントリで書いたとおり。
が、
前に書いたエントリのように、
<%= link_to 'hoge', :controller=>'hoge', :action=>'fuga', :piyo=>['hoge','fuga','piyo'] %>
なんてやっても、
params[:piyo]は配列で帰ってきてくれない。
で、どうなっているかと言えば、
配列を.join('/')で処理したのと同じものがパラメータに入ってくる。
上の例でいうと、
params[:piyo] > "hoge/fuga/piyo"
という感じ。
で、配列で取得したいときは、単純にsplit('/')すればいい。
ただ、気をつけたいのは[/]をエスケープしてくれないこと。
たとえば、
:hoge=>['ho/ge', 'fu/ga', 'pi/yo']
で渡すと、パラメータは
"ho/ge/fu/ga/pi/yo"ではいってきちゃう。
この条件さえクリアすれば、普通にsplitで配列に戻せる。
なかなか面倒です。
PR