我将如何创建 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
模式,您可以在这里阅读:
我想制作一个 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 toRedis
)
你的实现方式是这样的:
#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
模式,您可以在这里阅读: