添加Char。对博客条目的计数和限制

时间:2011-04-27 23:53:29

标签: ruby-on-rails count blogs character

我正在使用带有登录功能的RoR创建一个博客,我想限制每篇文章提交说1000个字符,并且任何人的回复评论最多350个。我该如何实施甚至开始呢?

理想情况下,char数量会在添加char时倒计时,并在减号时更改颜色(如Twitter)。

,或者

如果用户超过限制,文章或评论会抛出闪光通知。

我认为我实际上可以限制字符数量,在模型中添加以下内容:

validates_length_of:article,:maximum => 800

validates_length_of:comment,:maximum => 400

它是在用户输入时向用户显示剩余字符数的方法,但目前在客户端? RoR可以这样做吗?

4 个答案:

答案 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)

通过jQuery插件找到一个不错的“跨浏览器”解决方案,该插件将完成工作并“阻止”用户在客户端通过分配的数量提交文章。 Here所需的Rails插件为Here