rails:1196
From: Yosuke Suzuki <yosuke@j...>
Date: Mon, 29 May 2006 01:35:02 +0900
Subject: [rails:1196] Re: す、せ、そ、がの処理で問題
suzukiです。 書き忘れましたが、 $KCODE='UTF8'を設定し データベース、コードとも UTF-8です。 Yosuke Suzuki wrote: > suzukiと申します。 > > railsというよりもrubyの書き方の問題だと思われますが、 > 何かご存知のかたいらっしゃいましたら > ご返答いただけると助かります。 > > 現在、取引先企業の電話番号を > 管理するアプリケーションを作成しています。 > > データベースのshamei_kana > という項目には、平仮名の社名が登録されています。 > > getパラメータでエスケープした「あ」など五十音の1文字を > 渡すことで、「あ」の読みで始まる企業の一覧を表示するようにしています。 > > 濁音をもつ、か行、さ行、た行などについては > succメソッドを使って、例えば「か」なら「が」も対象に > するようにしています。 > > おおむね意図したとおり動いてますが、 > 「す」の場合、「す」と「ず」で始まるレコードだけでなく、「お」で > 始まるものも表示されてしまいます。 > 「せ」の場合は「が」、「そ」の場合は「ぎ」 > 「か」の場合は「ぜ」、「き」の場合は「ぞ」です。 > > このような意図しないレコードまでを取り出してしまう > 状況を解決する方法はありませんでしょうか? > > よろしくお願いします。 > > > 以下controllerの抜粋 > <テーブル名はreleases> > require 'jcode' > oto = @params[:oto] > oto = URI.unescape(oto) > if oto =~ /[あいうえおなにぬねのまみむめもやゆよらりるれろわを]/ > oto = oto + "%" > @release_pages, @releases = paginate :releases, :per_page => 10000, > :conditions => ["shamei_kana LIKE ?", oto] > elsif oto =~ /[かきくけこさしすせそたちつてと]/ > oto2 = oto.succ > oto = oto + "%" > oto2 = oto2 + "%" > @release_pages, @releases = paginate :releases, :per_page => 10000, > :conditions => ["shamei_kana LIKE ? OR shamei_kana LIKE ?", oto, oto2] > elsif oto =~ /[はひふへほ]/ > oto2 = oto.succ > oto3 = oto2.succ > oto = oto + "%" > oto2 = oto2 + "%" > oto3 = oto3 + "%" > @release_pages, @releases = paginate :releases, :per_page => 10000, > :conditions => ["shamei_kana LIKE ? OR shamei_kana LIKE ? OR shamei_kana > LIKE ?", oto, oto2, oto3] > end > > -- > ML: rails@r... > 使い方: http://QuickML.com/ > > -- ML: rails@r... 使い方: http://QuickML.com/
1195 2006-05-28 17:56 [yosuke@j... ] す、せ、そ、がの処理で問題 -> 1196 2006-05-28 18:35 ┣[yosuke@j... ] 1198 2006-05-29 04:55 ┗[someeda@g... ] 1199 2006-05-30 02:15 ┗[yosuke@j... ]