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

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top