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