如何创建Rails单击计数器?

时间:2015-11-10 04:55:04

标签: ruby-on-rails ruby clone

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

2 个答案:

答案 0 :(得分:1)

这是一件相当简单的事情,使用Rails执行此操作可能会有些过分。 jenniferdewalt.com示例只使用了javascript和一些Google API,代码被混淆了,所以我无法看到它是如何工作的。当不同的客户点击按钮等时,我不知道柜台是否需要为客户更新。

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

答案 1 :(得分:0)

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

你需要两个元素:

  

1)“计数”机制(在这种情况下只是before_action

     

2)存储(Model我们可以绑定到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 %>

这必须伴随着“存储”系统:

#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