我正在使用带有登录功能的RoR创建一个博客,我想限制每篇文章提交说1000个字符,并且任何人的回复评论最多350个。我该如何实施甚至开始呢?
理想情况下,char数量会在添加char时倒计时,并在减号时更改颜色(如Twitter)。
,或者
如果用户超过限制,文章或评论会抛出闪光通知。
我认为我实际上可以限制字符数量,在模型中添加以下内容:
validates_length_of:article,:maximum => 800
validates_length_of:comment,:maximum => 400
它是在用户输入时向用户显示剩余字符数的方法,但目前在客户端? RoR可以这样做吗?
答案 0 :(得分:1)
您要求的验证非常简单 我建议你使用javascript,jquery或你选择的任何其他js框架在浏览器的客户端实现它们。
如果在服务器端进行验证,在Rails中,您仍然需要将textfield元素与一些与之关联的javascript事件绑定。
因此,如果您需要如此高级别的UI,请不要在服务器端(此处为Rails)进行此类验证。
答案 1 :(得分:1)
这是一个实现服务器端验证的解决方案,当验证失败时会显示“flash”错误消息。
在您的文章模型中:
class Article < ActiveRecord::Base
...
validates_length_of :note, :maximum => 1000
...
end
在你的ArticlesController中:
def create
@article = Article.new
if @article.update_attributes(params)
redirect_to articles_path
else
render :action => "new"
end
end
在您的文章视图中:
<%= form_for @article do |f| %>
// This can be moved to a template
<% if @article.errors.any? %>
<div id="error_explanation">
<h2>
<%= pluralize(@article.errors.count, "error") %> prohibited this record from being saved:
</h2>
<ul>
<% @article.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
// More form fields
<% end %>
答案 2 :(得分:1)
你必须在javascript中执行此操作,因为它是您正在寻找的客户端功能。您还应该进行模型验证以确保保留此限制(您可以通过使用curl等方式发送POST来轻松实现javascript验证。)
Google搜索“javascript字符计数器”会产生大量结果。
答案 3 :(得分:0)