我可能正在做一些非常愚蠢的事情,但我不确定我做错了什么。 我正在创建一个计数器,用于查看用户在当前会话中访问索引页面的次数。
以下是在store_controller.rb
中class StoreController < ApplicationController
def increment_counter
if session[:counter].nil?
session[:counter] = 0
end
session[:counter] += 1
end
def index
@products = Product.order(:title)
@counter = increment_counter
end
end
以下是application.html.erb布局视图。
<%= "You've visited this page #{pluralize(@counter, "time")}" %>
当然还有其他代码,但现在似乎无关紧要。
@counter显示值0,并且不会增加任何值。
我做错了什么? 感谢。
答案 0 :(得分:1)
尝试
class StoreController < ApplicationController
after_action :increment_counter, only: [:index]
def index
@products = Product.order(:title)
end
private
def increment_counter
if session[:counter].nil?
session[:counter] = 0
end
session[:counter] += 1
@counter = session[:counter]
end
end
答案 1 :(得分:0)
如果需要,可以消除实例变量的使用:
class StoreController < ApplicationController
before_action :increment_counter, only: [:index]
def index
@products = Product.order(:title)
end
private
def increment_counter
if session[:counter].nil?
session[:counter] = 0 #=> Or use 1
else
session[:counter] += 1
end
end
end
在app/views/store/index.html/erb
添加:
<%= "You have visited #{pluralize(session[:counter], 'time')}" %>