忍者ブログ
ブログツール、2007/11/06作成
[9] [8] [7] [6] [5] [4] [3] [2] [1
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

先日書いたエントリで、パラメータに配列やハッシュを格納する方法を書いた。
で、複雑な使い方をしたら、日本語のエンコードでハマった。

barを生成する情報を持つhogeインスタンスの配列からチェックボックスで選択して追加しようとする。

view
<% index = 0%>
<% hoges.each do |hoge| %>
<%= check_box_tag "index[]", index %>
<%= hidden_field_tag "hoge[][fuga]", hoge.fuga %>
<%= hidden_field_tag "hoge[][piyo]", hoge.piyo %>
<% end %>
<%= link_to_remote "チェックしたHogeを加える",
:update=>'hoge_column',
:submit=>'hoge_colunm,
:url=>{:contoller=>'bar', :action=>'add_bar' } %>
controller
def add_bar
if params[:index]
params[:index].each do |index|
bar = Bar.new
bar.fuga = params[:hoge][index.to_i][:fuga]
bar.piyo = params[:hoge][index.to_i][:piyo]
end
end
end
と、こんな風にしてみた。
実際にはもうちょっと複雑だけど。

で、このパラメータに日本語が入ったときにエンコード問題が。

いろいろ試行錯誤してみた。

上の例でいうと、hoge.fugaが「動画共有」だったとすると、
コントローラでparams[:hoge][index.to_i][:fuga]をみると、
%25E5%258B%2595%25E7%2594%25BB%25E5%2585%25B1%25E6%259C%2589

む、これはURLエンコードがデコードされてないな、と思って、
URI.decode(params[:hoge][index.to_i][:fuga])してみると、
%E5%8B%95%E7%94%BB%E5%85%B1%E6%9C%89

ええ~!?
で、もしかすると、と思い、さらにデコードしてみる。
URI.decode(URI.decode(params[:hoge][index.to_i][:fuga]))
動画共有

うむむ…何で2回もエンコードされてるんだ?orz
PR
この記事にコメントする
name
title
color
mail
URL
comment
pass   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
secret (チェックを入れると管理人だけに表示できます)
この記事へのトラックバック
この記事にトラックバックする:
ついめ~じ
ブログ内検索
フリーエリア
サニーカメラ
Powered by Ninja Blog    template by Temp* factory    icon by MiniaureType

忍者ブログ [PR]