我有几个视图,我希望能够引用一个名为session[:month_view]
的基于日期的会话变量,该变量定义从各个表中提取的数据。我的麻烦在于我希望用户能够更新他们的观看次数以查看下个月或上个月,我无法弄清楚如何更新session[:month_view]
。
如果会话变量当前不存在,我有一种设置会话变量的方法(有效地将:month_view
设置为当前月份:
在控制器中,名为before
:
def set_month_view
if session[:month_view] == nil
session[:month_view] = DateTime.new(Time.now.year, Time.now.month, 1, 0, 0, 0, "+00:00")
end
end
我想要的是一种在我的视图中使用链接或表单来增加或减少的方法:month_view为1或-1。我猜我需要将一个整数传递给set_month_view
方法,但我只是不知道如何。
答案 0 :(得分:0)
这应该可以解决/维护非常容易。
控制器方法: (根据需要添加重定向或渲染)
# Make sure this remains in before_filter for the increment and decrement methods too
def set_month_view
session[:month_view] ||= DateTime.new(Time.now.year, Time.now.month, 1, 0, 0, 0, "+00:00")
end
def increment_month_view
session[:month_view] = session[:month_view] + 1.month
end
def decrement_month_view
session[:month_view] = session[:month_view] - 1.month
end
查看链接:
You are viewing month: <%= session[:month_view] %>
<%= link_to 'backwards', decrement_month_view_controller_path %>
<%= link_to 'forwards', increment_month_view_controller_path %>