在应用里,每个用户都会有一个 session,也就是会话,在会话里可以存储一点数据,在请求之间你可以利用 session 里的数据。会话里的数据可以在控制器还有视图里使用 ...
你可以自己选择存储 session 的机制,在 config/initializers/session_store.rb 里面,可以配置存储 session 用的机制 ..
默认会使用 cookie 存储 session 数据 ... 你也可以使用缓存,ActiveRecord 这些东西存储 session ..
通过 session 这个实例方法我们可以设置或者得到会话里的数据 ...
先随便找一个控制器 ... 定义一个方法 .. 设置一个 session 可以这样 ...
session[:user_name] = "xiaoxue" ... 意思就是在 session 里添加一条数据,名字是 :user_name ,对应的值是 xiaoxue ..
我们可以直接在这个控制器方法里输出这个 session 的值 ... render plain: session[:user_name] ..
回到浏览器 .. 访问一下 photos ... 页面上显示的就是 :user_name 这个 session 数据 ...
在控制器里再添加一个方法,名字是 show ,在这个方法里再显示一下 :user_name 这个 session 对应的值 ...
def show
render plain: session[:user_name]
end
回到浏览器 .. 访问一下 /photos/1 ... 这个地址是用 photos 控制器里的 show 方法处理的 ... 页面上也会显示 在 index 方法里设置的 :user_name 这个 session 数据的值 ...
删除一个 session 数据,可以让它的值等于 nil ..
现在页面上就不会再显示 :user_name 这个 session 数据了 .. 因为我们已经把它给删除掉了 ...
如果想清空整个 session,可以使用 reset_session 这个方法 ..