Как ограничить количество * слов * в текстовом поле ввода в Rails 3? - PullRequest
2 голосов
/ 10 мая 2011

Я создаю приложение, которое ограничивает количество слов, а не символов, в поле.

Как мне это сделать?

Ответы [ 3 ]

1 голос
/ 10 мая 2011

Разделить по умолчанию, чтобы разделить на (белое) пространство так:

s.split.size

должно получить количество слов для вас.

Если вы хотите использовать это в проверке:

class Widget < ActiveRecord::Base
  validate :word_count_is_less_than_5

private

  def word_count_is_less_than_5
    errors[:widget] << "too many words" if desc.split.size > 4
  end
end
1 голос
/ 23 августа 2012

Существует очень простой способ сделать это благодаря опции :tokenizer. В этом примере поле сводной информации в моей модели ограничено максимум 250 словами.

validates :summary, :presence => true, :length => { 
  :maximum => 250,
  :tokenizer => lambda { |str| str.scan(/\w+/) },
  :too_long  => "Please limit your summary to %{count} words"
}

В этом случае токенизатор разбивает строку на слова.

1 голос
/ 10 мая 2011

Используйте регулярное выражение для подсчета слов, а затем используйте его для проверки:

def word_count(s)
  count = 0
  s.scan(/\b\S+\b/) { count = count + 1}
  count
end 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...