Actuellement, je l'utilise pour supprimer les espaces.Vous souhaitez nettoyer et modifier les champs de formulaire Unicode en utilisant un modèle de rails de manière plus sèche
class Newsletter < ActiveRecord::Base
before_validation :clean_up_whitespace
end
def clean_up_whitespace
fields_to_strip = ['title','notes']
fields_to_strip.each { |f|
unless self.attributes[f].nil?
self.attributes[f].strip!
end
}
end
Je veux faire quelque chose de similaire pour se débarrasser de type MS mot de unicode. Actuellement, j'utiliser:
require 'iconv'
class Newsletter < ActiveRecord::Base
before_validation :clean_up_unicode
end
def clean_up_unicode
unless title.blank?
self.title = Iconv.iconv('ascii//ignore//translit', 'utf-8', self.title).to_s
end
unless notes.blank?
self.notes = Iconv.iconv('ascii//ignore//translit', 'utf-8', self.notes).to_s
end
end
Cette méthode fonctionne mais n'est pas très sec car je dois le faire pour 40 des champs de formulaire.
Je pensais que je pouvais utiliser quelque chose comme:
require 'iconv'
class Newsletter < ActiveRecord::Base
before_validation :clean_up_unicode
end
def clean_up_unicode
unicode_fields_to_clean = ['title','notes']
unicode_fields_to_clean.each { |u|
unless self.attributes[u].blank?
self.attributes[u] = Iconv.iconv('ascii//ignore//translit', 'utf-8', attributes[u]).to_s
end
}
end
Je sais que je ne comprends pas quelque chose avec la façon dont cela fonctionne.
quand je remplacerai
self.attributes [u] =
avec
met une_variable =
Je reçois la sortie correcte à la console. Je ne sais tout simplement pas comment rétablir cette variable dans le formulaire.
Si cela aide le code qui est faux est self.attributes [u] = Je ne sais pas quoi remplacer avec. J'aurais pensé que je pourrais utiliser self.VariableNameOfField = mais les rails ne reconnaissent pas la variable utilisée directement comme ça.