Hyphenate Tags acts_as_taggable_on hinzugefügt
-
20-09-2019 - |
Frage
Ich bin mit acts_ as_ taggable_on in meiner app und es hat perfekt funktioniert aber ich bin auf der Suche nach Informationen darüber, wie eine Änderung zu machen.
Zur Zeit, wenn ich einen Tag eingeben, die Leerzeichen enthält, wird der Tag mit diesen Räumen gespeichert und so alle Datensätze mit diesem Tag Ich habe etwas zu sehen wie:
http://myapp.local/tag/this%20tag%20has%20spaces
Wie kann ich Tags Silbentrennung, wenn sie von zuerst gespeichert werden acts_ as_ taggable_on so dass das Etikett gespeichert ist, als dies-Tag-has-Räume?
Ich kann die Werte ersetzen wie folgt, aber wie kann ich das tun, bevor acts_ as_ taggable_on übernimmt und speichert die Tag-Liste?
tag.downcase.gsub(/[^[:alnum:]]/,'-').gsub(/-{2,}/,'-')
Danke
Simon
Lösung
sich die Tatsache zunutze, dass Indem acts_as_taggable_on_steroids stellt eine tag_list
Accessor, die geschrieben werden kann, ist hier was ich getan habe auf einem meiner Modelle. ich
vorausgesetzt, dass Sie etwas tun könnten ähnlich:
class MyTaggableObject < ActiveRecord::Base
acts_as_taggable
before_validation :clean_up_tags
# Clean up tag formatting
def clean_up_tags
# Make lowercase
self.tag_list.map!(&:downcase)
# Replace any non-word ([^\w]) characters with a hyphen
self.tag_list.map! {|tag| tag.gsub(/[^\w]+/i,'-')}
end
end
Andere Tipps
Sie können die folgende Zeile hinzufügen:
ActsAsTaggableOn.force_parameterize = true
zu einem Initialisierer.