我将如何创建 Rails 点击计数器?

How Would I Create A Rails Click Counter?

我想制作一个 rails 点击计数器,类似于 http://jenniferdewalt.com/click_counter/buttons/1 谢谢!我想知道从哪里开始,以及它是如何工作的。如果您需要更多详细信息,请告诉我。

这是一件相当简单的事情,使用 Rails 来做可能有点过头了。 jenniferdewalt.com的例子只是用了javascript和一些GoogleAPI,代码是混淆过的,所以我看不出它是如何工作的。我不知道当不同的客户端点击按钮等时计数器是否需要为客户端更新

为了在 Rails 中制作计数器,我会为计数器创建一个具有一个整数属性的模型,并且在数据库中只有一个模型实例。然后控制器将为视图获取该模型。单击按钮时,视图将向控制器发送 AJAX 请求。控制器将递增计数器并将计数器对象和 return 新计数保存到视图。

Toby Kenobi所述,这将是一个相对简单的实现。

您需要两个元素:

1) The "count" mechanism (just before_action in this case)

2) Storage (a Model we can tie to Redis)


你的实现方式是这样的:

#config/routes.rb
root "application#index"

#app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
   before_action :click, only: :index

   def index
      @clicks = Click.sum
   end

   private

   def click
      Click.create
   end
end

这将允许您使用如下内容:

<%= button_to "Click Me", root_path, method: :get %>

这必须伴随 "storage" 系统:

#app/models/click.rb
class Click < ActiveRecord::Base
   def self.sum
      $redis.get "count"
   end

   def self.create value=1
      $redis.incr "count", value
   end
end

Redis 实际上有一个 counter 模式,您可以在这里阅读:

http://redis.io/commands/INCR#pattern-counter