1

我在我的应用程序中使用acts_ as_ taggable_on 并让它完美运行,但是我正在寻找有关如何进行修改的信息。

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

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

通过利用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
于 2009-12-20T22:50:45.720 回答
1

您可以添加以下行:

ActsAsTaggableOn.force_parameterize = true

到初始化器。

于 2014-02-10T21:31:47.510 回答