Теги дефисов добавлены в acts_as_taggable_on - PullRequest
1 голос
/ 20 декабря 2009

Я использую act_ as_ taggable_on в своем приложении, и он отлично работает, однако я ищу информацию о том, как сделать одну модификацию.

В настоящее время, если я ввожу тег с пробелами, тег сохраняется с этими пробелами, и поэтому для просмотра всех записей с этим тегом у меня есть что-то вроде:

<a href="http://myapp.local/tag/this%20tag%20has%20spaces" rel="nofollow noreferrer">http://myapp.local/tag/this%20tag%20has%20spaces</a>

Как я могу дефисировать теги, когда они впервые сохраняются ActS_As_ taggable_on, чтобы тег сохранялся как this-tag-has-space?

Я могу подставить значения следующим образом, но как мне это сделать до того, как actions_ as_ taggable_on вступит во владение и сохранит список тегов?

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

Спасибо

Simon

Ответы [ 2 ]

5 голосов
/ 21 декабря 2009

Воспользовавшись тем, что 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
1 голос
/ 11 февраля 2014

Вы можете добавить следующую строку:

ActsAsTaggableOn.force_parameterize = true

инициализатору.

...