我有一个评论模型,在其中我限制了评论的最大长度,例如:
validates_length_of :comment, :maximum => 500
在我看来,我已经声明了输入字段:
<%= f.text_area :comment,:as => :text, :maxlength => 500 %>
输入字段的限制按预期工作,最大限制为500个字符。
但是,模型限制无法按预期工作。带有换行符的500个字符的文本给出了验证错误。该模型将换行符计算为两个字符(以及其他可能的字符)。所以
此输入将起作用,无需换行符:
abc abc abc abc....
这不会:
abc
abc
.
.
有没有一种简单的方法可以使validates_length_of将换行符(和其他字符)计为一个字符?
===结果1 ===
我结合了乔恩(Jon)和达里奥(Dario)的出色答案,并创建了以下代码:
before_validation(:on => :create) do
self.comment = comment.gsub("\r\n","\n") if self.comment
end
最佳答案
浏览器将文本区域中的换行符发送为“\r\n”
使用Rails默认长度验证器时,每个换行有效地被计为两个字符
因此,要么在 Controller 中创建一个replace方法,要么创建一个自定义的长度验证器。
关于ruby-on-rails - Rails,验证输入字段的最大长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13496783/