1

私は自分のアプリでacts_as_taggable_onを使用していて、それを完全に機能させていますが、1つの変更を行う方法に関する情報を探しています。

現在、スペースを含むタグを入力すると、タグはこれらのスペースとともに保存されるため、このタグを含むすべてのレコードを表示するには、次のようになります。

http://myapp.local/tag/this%20tag%20has%20spaces

タグがacts_as_taggable_onによって最初に保存されたときにタグをハイフンでつなぎ、タグがthis-tag-has-spacesとして保存されるようにするにはどうすればよいですか?

次のように値を置き換えることができますが、acts_ as_ taggable_onがタグリストを引き継いで保存する前にこれを行うにはどうすればよいですか?

tag.downcase.gsub(/[^[:alnum:]]/,'-').gsub(/-{2,}/,'-')

ありがとう

サイモン

4

2 に答える 2

5

act_as_taggable_on_steroidstag_listが書き込み可能なアクセサーを公開しているという事実を利用して、モデルの 1 つで行ったことを次に示します。同様のことができると思います:

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
于 2009-12-20T22:50:45.720 に答える
1

次の行を追加できます。

ActsAsTaggableOn.force_parameterize = true

イニシャライザに。

于 2014-02-10T21:31:47.510 に答える