模拟轨道中的限制字数

时间:2013-11-26 11:35:17

标签: ruby-on-rails ruby

我遇到了一个带有一个名为tags的属性的模型meet.rb。 用户使用单个form_for输入它们。 问题是:如何在我的模型中限制如果用户输入更多3个单词,他将收到错误消息。 或者,如果你能用javascript向我展示解决方案,那也很不错。 谢谢!

3 个答案:

答案 0 :(得分:3)

我可能会在Meet模型中编写自定义验证方法:

class Meet < ActiveRecord::Base

  # ...
  validate :no_more_than_three_tags
  # ...
  def no_more_than_three_tags
    errors.add(:tags, 'more than three words') if tags.split(/\W/).count > 3
  end
end

答案 1 :(得分:0)

没有任何代码,我认为你有一个带参数的方法,标签。如果是这样,你可能会做这样的事情。

 def method(tags)
   array = tags.split(" ")
   raise ArgumentError.new("More than three words entered") if array.size > 3
 end

答案 2 :(得分:0)

最好在客户端检查
word_couter.js.coffee中创建app/assets/javascripts
包括app/assets/javascripts/application.js.coffee
此文件#= require word_couter

$ ->
  $('[name="you_input"]').on "change", ->
    input_size = $(@).val().split " "
    if input_size.length > 3
      ...some code here ....

我希望这有帮助!