在RoR中更新会话变量和刷新页面

时间:2014-05-13 12:04:01

标签: ruby-on-rails session ruby-on-rails-4

我有几个视图,我希望能够引用一个名为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方法,但我只是不知道如何。

1 个答案:

答案 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 %>