添加到acts_as_taggable_on的连字符标签

sim*_*ung 1 ruby-on-rails acts-as-taggable

我在我的应用程序中使用acts_ as_ taggable_on并使其工作正常,但我正在寻找有关如何进行一次修改的信息.

目前,如果我输入包含空格的标签,标签将与这些空格一起保存,因此要查看具有此标签的所有记录,我有类似的内容:

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

当act_ as_ taggable_on首次保存标签时,如何将标签连字符,以便标签存储为this-tag-has-spaces?

我可以如下替换值,但是如何在acts_ as_ taggable_on接管并保存标记列表之前执行此操作?

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

谢谢

西蒙

jer*_*ith 5

通过利用acts_as_taggable_on_steroids暴露tag_list可以写入的访问器的事实,这是我在我的一个模型上所做的.我假设你可以做类似的事情:

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
Run Code Online (Sandbox Code Playgroud)