Permalink_fu, no me escapa bien el gsub

He añadido en el permalink para que detecte los caracteres con acentos y
los muestre sin tilde, pero no lo escapa bien.
Por ejemplo si hago:
PermalinkFu.escape('Filosofía y objetivos) --> Lo normal sería
filosofia_y_objetivos, pero me saca: filosofaia_y_objetivos
Parece ser que la “í” la detecta pero por alguna extraña razón es como
si hubiera una tilde antes y me mete la a, así con todas las palabras
que tengan tilde, me mete antes una vocal
Tengo la aplicación en utf-8 y en el database.yml le he puesto encoding:
utf8, no se de dónde me puede meter un acento de más, alguna sugerencia?

Al examinar la tabla a través del navegador por defecto me sale la
codificación en iso-8859-1 y me salen caracteres raros, pero al ponerlo
en utf-8 que es como está, me sale bien, pero no se por qué me mete una
vocal antes.

permalink_fu.rb

require ‘iconv’
module PermalinkFu
class << self
attr_accessor :translation_to
attr_accessor :translation_from

def escape(str)
       #result = Iconv.iconv(translation_to, translation_from, 

str).to_s
#result.gsub!(/\W+/, ’ ‘) # all non-word chars to spaces
result = str.downcase
result.gsub!(/[áàäâå]/, ‘a’)
result.gsub!(/[éèëê]/, ‘e’)
result.gsub!(/[íìïî]/, ‘i’)
result.gsub!(/[óòöô]/, ‘o’)
result.gsub!(/[úùüû]/, ‘u’)
result.gsub!(/[ýÿ]/, ‘y’)
result.gsub!(/[ñ]/, ‘n’)
result.gsub!(/[ç]/, ‘c’)
result.gsub!(/[’"]/, ‘’)
result.gsub!(/[^a-zA-Z0-9-]/, ’ '); #result.gsub!(/W/, ’ ')
result.gsub!(/ +/, '’)
result.gsub!(/(
)$/, ‘’)
result.gsub!(/^(_)/, ‘’)
result
end
end

def has_permalink(attr_name, permalink_field = nil)
permalink_field ||= ‘permalink’
before_validation { |record| record.send("#{permalink_field}=",
PermalinkFu.escape(record.send(attr_name).to_s)) if
record.send(permalink_field).to_s.empty? }
end
end

PermalinkFu.translation_to = ‘ascii//ignore//translit’
PermalinkFu.translation_from = ‘utf-8’

On May 16, 2007, at 4:18 PM, Miguel Angel Calleja Lázaro wrote:

utf8, no se de dónde me puede meter un acento de más, alguna
sugerencia?

Que vale $KCODE en script/console?

– fxn

Xavier N.
escribió:

si hubiera una tilde antes y me mete la a, así con todas las palabras
– fxn


Ror-es mailing list
[email protected]
simplelogica.net

none

On May 16, 2007, at 4:36 PM, Miguel Angel Calleja Lázaro wrote:

Parece ser que la “í” la detecta pero por alguna extraña razón es

none

Entonces lo que sospecho es que las expresiones regulares no se
entienden como UTF8 porque no tienen el flag /u y el codigo fuente no
figura que este en UTF8 para el interprete.

Podrias añadir

$KCODE = ‘u’

en environment.rb y rebotar para que vuelva a cargarse el plugin?

– fxn

P.S.: String#downcase no entiende UTF8, supongo que no estas en 1.2.x
porque $KCODE valdria otra cosa, en pre-1.2 se podia tirar de
unicode_hacks o bien hacerlo a mano.

On May 16, 2007, at 5:09 PM, Miguel Angel Calleja Lázaro wrote:

Efectivamente, me faltaba añadir el $KCODE,

Estupendo, era eso pues.

el hosting en el que estoy
tienen la versión 1.1.6, leyendo he visto que en la 1.2.2 ya viene por
defecto. Solucionado, muchísimas gracias

Seguramente ya estas al caso, pero recuerda que al margen de lo que
un hosting ofrezca a nivel de sistema siempre puedes meter la 1.2 en
vendor.

– fxn

Xavier N.
escribió:

palabras

$KCODE = ‘u’
[email protected]
simplelogica.net

Efectivamente, me faltaba añadir el $KCODE, el hosting en el que estoy
tienen la versión 1.1.6, leyendo he visto que en la 1.2.2 ya viene por
defecto. Solucionado, muchísimas gracias

On May 16, 2007, at 5:22 PM, Miguel Angel Calleja Lázaro wrote:

si? y cómo puedo hacer éso? migro toda la aplicación en un
directorio de
vendor? cómo hago para que luego apunte allí?

Ves al root y ejecuta

rake rails:freeze:edge TAG=rel_1-2-3
rake rails:update

Habra aparecido una carpeta nueva vendor/rails, subela al hosting.
Rails al arrancar mira primero de nada si existe vendor/rails, y en
tal caso carga ese Rails, sin importar lo que haya en el resto del
sistema. Tendras que rebotar.

– fxn

Xavier N.
escribió:

si? y cómo puedo hacer éso? migro toda la aplicación en un directorio de
vendor? cómo hago para que luego apunte
allí?

Xavier N.
escribió:


Ror-es mailing list
[email protected]
simplelogica.net

Aha, muchas gracias por tu ayuda, lo anoto