ruby-on-rails - Rails,验证输入字段的最大长度

标签 ruby-on-rails

我有一个评论模型,在其中我限制了评论的最大长度,例如:

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/

相关文章:

sql-server - 使用 ActiveRecord 连接到 SQL Server

ruby-on-rails - 在 Rails 的数据库中将用户输入保存为 xml 文件

ruby-on-rails - 提交后 Rails Active Record 的 ID 为 nil

ruby-on-rails - 大表上的 Rails 计算

ruby-on-rails - 创建新的 Rails 应用程序时,为什么会出现 Gemfile.lock 文件而不运行 bundle 安装?

ruby-on-rails - 在 Rails 中实现查找表

ruby-on-rails - 在应用它们之前,如何确定 'rake db:migrate'将应用哪些更改?

ruby-on-rails - 设计返回 NoMethodError(未定义方法 `new_user_session_path'

ruby-on-rails - 在 Rails 中匹配以给定子字符串结尾的字符串,某些情况除外

ruby-on-rails - 在 Rails 中预编译/预加载缓存片段