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 服务器。

rails-quick-guide.html