Ruby on Rails 中文本区域的最大长度

Posted

技术标签:

【中文标题】Ruby on Rails 中文本区域的最大长度【英文标题】:Maximum length on a textarea in Ruby on Rails 【发布时间】:2010-10-27 13:06:43 【问题描述】:

我尝试在我的表单上的textarea 上应用:maxlenght => 40。 但它没有成功。 我们可以对文本区域进行长度限制吗?

文本区域的代码是

<%= f.text_area :data,
                :rows => 2,
                :cols => 60 ,
                :maxlength => 140,
                :autocomplete => :off,
                :class => "textareabytes" %>

【问题讨论】:

【参考方案1】:

就像Rahul 说的那样,html 中没有textareamaxlength 属性。只有text input 有这个。

您需要记住的是,RoR 的 text_area 函数(以及所有 RoR 的 HTML 生成器函数)接受您提供的任何参数。如果他们无法识别该参数,那么他们只会将其转换为 HTML。

<%=f.text_area :data, :hellothere => "hello to you too"%>

将输出此 HTML:

<textarea name="data" hellothere="hello to you too"></textarea>

我知道这很难记住,但是 Ruby on Rails 并不神奇,它只是为你做了很多事情。诀窍是知道它们是如何工作的,这样您就可以了解它们为什么起作用,以及当它们不起作用时如何解决它们!

【讨论】:

从 HTML5 开始,textarea 有一个 maxlength 属性。不幸的是,它在 10 之前的 IE 中不受支持。请参阅 MDN 获取 full details。 +1 表示“我知道这很难记住,但 Ruby on Rails 并不神奇——” HTML5 的最大长度来源:w3schools.com/tags/att_textarea_maxlength.aspdeveloper.mozilla.org/en-US/docs/Web/HTML/Element/… 我不明白。根据您所说,&lt;textarea maxlength="50"&gt;&lt;/textarea&gt; 应该在那里。因为一旦它出现在客户端,它就可以工作(至少在最新的 Chrome 中)。但在我的情况下,它没有被渲染。【参考方案2】:

会不会是笔误?

":ma​​xlenght => 40 " 在您的帖子中拼写错误。

编辑:

我没有仔细阅读您的帖子。我认为 HTML 中的 textarea 没有 maxlength 属性。您将不得不在 javascript 中处理它。在“MaxLength on a Textarea”中有更多信息。

【讨论】:

我很抱歉实际上它在代码中是正确的,我在这里拼错了 Thnx 伙计,因为没有其他人去......我写了一个 javascript 函数来实现这个......【参考方案3】:

当然不是严格意义上的你所追求的,但是,你总是可以放一个:

validates_length_of :data, max: 40

在您的模型上。当然不会停止文本区域的大小:)

【讨论】:

正确的方法,即使使用 maxlength 标签。【参考方案4】:

您可以使用 maxlength 属性。它是 HTML5 中标签的新功能。它现在应该可以工作。

【讨论】:

你说得对!它在 2021 年的 Ubuntu 上的 Firefox、Chrome 和 Opera 中也能正常工作! \o/

以上是关于Ruby on Rails 中文本区域的最大长度的主要内容,如果未能解决你的问题,请参考以下文章

文本区域的最大长度在 IE 中不起作用

Ruby on Rails 3,多个域的电子邮件验证?

强制页面上所有文本区域的最大长度

Ruby on Rails 使用标签

Ckeditor无法保存textarea值(Ruby on Rails)

是否有类似 .NET 开发的 Ruby on Rails 框架? [关闭]