Ruby on Rails 2.1 - 会话和 Cookies
会话
要跨多个请求保存数据,您可以使用会话或闪存哈希。闪存存储一个值(通常是文本)直到下一个请求,而会话在整个会话期间存储数据。
session[:user] = @user flash[:message] = "数据已成功保存" <%= link_to "login", :action => 'login' except session[:user] %> <% if flash[:message] %> <div><%= h flash[:message] %></div> <% end %>
可以关闭会话管理。
session :off # 关闭会话管理 session :off, :only => :action # 仅适用于此 :action session :off, :except => :action # 仅适用于此操作 session :only => :foo, # 仅适用于执行 HTTPS 时的 :foo :session_secure => true session :off, :only=>:foo, # 如果用作 Web 服务,则关闭 foo :if => Proc.new { |req| req.parameters[:ws] }
Cookies
以下是设置 cookies 的语法 −
# 设置一个简单的会话 cookie cookies[:user_name] = "david" # 设置一个 1 小时后过期的 cookie cookies[:login] = { :value => "XJ12", :expires => Time.now + 3600}
以下是读取 cookies 的语法 −
cookies[:user_name] # => "david" cookies.size # => 2
以下是删除 cookies 的语法 −
cookies.delete :user_name
设置 cookies 的选项符号如下 −
value − cookie 的值或值列表(作为数组)。
path − 此 cookie 适用的路径。默认为应用程序的根目录。
domain − 此 cookie 适用的域。
expires − 此 cookie 过期的时间,作为 +Time+ 对象。
secure −此 cookie 是否为安全 cookie(默认为 false)。安全 cookie 仅传输到 HTTPS 服务器。