Hej Jag har en rails applikation som anvnder MYSQL och har definierat tabellerna enligt create_table :places, :force => true, :force => true, :options => 'ENGINE=InnoDB DEFAULT CHARSET=utf8' do |table| och html filen enligt <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=8" /> och databsen i configurationsflen enligt development: adapter: mysql encoding: utf8 database: Disweb_1-development username: root password: host: localhost pool: 5 timeout: 5000 Mina problem r 1. Nr jag anvnder autocomplete och gr search=request.raw_post.downcase.split('=').second.split('&').first fr att ta ut skstrngen s fr jag '%c3%b6' liknande tecken fr Detta tgrdar jag med fljande fix def to_uf8(search) #- fix to handle utf8 problem when inputting search chrs search.gsub!('%c3%b6','') search.gsub!('%c3%a4','') search.gsub!('%c3%a5','') search.gsub!('%c3%96','') search.gsub!('%c3%84','') search.gsub!('%c3%85','') return search end Vilket inte verkar vara rtt vg att g !!! 2. Nr jag sker efter matchningar enligt ['LOWER(name) LIKE ?', '%' + search.downcase + '%' ] ger search med A samma resultat, dvs i autocompletefltet matchar alla namn som har A 3. Nu vet jag inte om det finns samma problem alla gnger jag anvnder find med i villkorssatsen ? I s fall r jag illa ute ! Jag har lst att man ev kan tgrda detta med att collation=utf8_unicode_c men var och hur definierar man detta ? Finns det andra lsningar till mina problem ? Tacksam fr all hjlp !
on 2011-02-13 11:18
on 2011-02-13 11:58
2011/2/13 Hans Marmolin <hans.marmolin@klockholm.se>: > Mina problem r > 1. Nr jag anvnder autocomplete och gr > search=request.raw_post.downcase.split('=').second.split('&').first > fr att ta ut skstrngen s fr jag '%c3%b6' liknande tecken fr > Detta tgrdar jag med fljande fix > > def to_uf8(search) > #- fix to handle utf8 problem when inputting search chrs > search.gsub!('%c3%b6','') > Vilket inte verkar vara rtt vg att g !!! Nej, definitivt inte. raw_post r vl URL-encodad, d.v.s. alla "konstiga" tecken skrivs med procenttecken och siffror. Kan du inte anvnda params['search'] eller liknande fr det hr? Det vrde du vill t finns frmodligen redan omgjort till UTF-8 ngonstans. raw_post verkar ondigt lgniv. > 2. Nr jag sker efter matchningar enligt > ['LOWER(name) LIKE ?', '%' + search.downcase + '%' ] > ger search med A samma resultat, dvs i autocompletefltet matchar alla Jag brukar gra typ ['name COLLATE utf8_swedish_ci LIKE ?', '%' + search + '%' ] D blir skningen case-insensitive (ven med /) och skiljer p t.ex. "a" och "" men inte p t.ex. "a" och "". > 3. Nu vet jag inte om det finns samma problem alla gnger jag anvnder find > med i villkorssatsen ? > I s fall r jag illa ute ! Skriv tester fr detta s mrker du.
on 2011-02-13 19:01
Henrik Tack fr hjlpen - skall flja dina rd. D tror jag att problemen lser sig Jag har ett annat problem som jag lnge skt svar p men inte kunnat hitta ngot. Det gller inte men best practise s det platsar vl egentligen inte i denna lista, men ndock - det kan ju vara av visst allmnt intresse Jag har ofta flera olika views som anropar samma action i en controller med olika indata och ibland skall ox olika views renderas tex en show action som gller en plats kan anropas frn en plats-lista eller frn ett plats-autocomplet flt, etc i platscontroller viewn men ven frn en lnk i en annan view, eller frn ett redirect i en annan action. De olika anropen har olika indata och krver delvis olika logik och implementation Resultatet r tjocka controller actions med mnga villkorssatser - inte vidare snyggt! Men hur lser rman problemet ? - villkorsatser i en action men det bryter mot regeln "tunna controllers" - flera controllers - men det bryter mot DRY d mycket av koden r gemensam och man ltt hmnar i tex 5 olika plats-controllers - flera special-actions men det bryter mot RESTs principer - designa om s att problemet inte uppstr, men det bryter mot en Anvndarorienterad design som jag tillmpar dr man utgr ifrn anvndarnas uppgifter och situation S min frga r! Vad r best practise nr det gller detta problem? Tacksam fr all hjlp ____________________________________________ Hans Marmolin St: Larsgatan 50, 58224 Linkping, Sweden Phone: +46708371202 13 feb 2011 kl. 11.56 skrev Henrik Nyh:
on 2011-02-14 02:15
Hello Hans, Can you please post question and answer (or a summary thereof) in English, so that the rest of the subscribers can follow the discussion? [From looking at the code, a function such as *to_utf8* below is extremely restricted, and there is a high chance that you soon get hit with a character that's not in your list.] Regards, Martin. On 2011/02/13 19:18, Hans Marmolin wrote: > <meta http-equiv="X-UA-Compatible" content="IE=8" /> > timeout: 5000 > search.gsub!('%c3%b6','') > 2. Nr jag sker efter matchningar enligt > > > > > > > > -- #-# Martin J. Drst, Professor, Aoyama Gakuin University #-# http://www.sw.it.aoyama.ac.jp mailto:duerst@it.aoyama.ac.jp
on 2011-02-14 07:05
Sorry Martin But I posted it in the wrong group and it has been moved to rails-se For your information One problem was that I use request.raw_post to get the search string and that does no handle My mistake. Did not really understad how autocomplete worked when I forst wrote that code The proposed solution was to use params['search'] instad that should take care of that The second problem was about how to search only fr in an autocomplete field and the proposed solution was to use ['name COLLATE utf8_swedish_ci LIKE ?', '%' + search + '%' ] as search condition ____________________________________________ Hans Marmolin St: Larsgatan 50, 58224 Linkping, Sweden Phone: +46708371202 14 feb 2011 kl. 02.14 skrev Martin J. Drst:
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.