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’