跳转到内容

Ruby on Rails/ActionController/Sessions

来自维基教科书,开放世界中的开放书籍

有关会话的技术解释,请查看关于会话的维基百科文章。

在 Rails 中,您有一些选项可以存储会话。大多数情况下,您希望将会话存储在服务器上,但是对于与安全性相关的数据,您可能希望考虑将会话存储在数据库中。要更改会话存储,请编辑config/initializers/session_store.rb并务必仔细阅读RoR 网站

使用您的会话

[编辑 | 编辑源代码]

与参数一样,Rails 提供了一种简单的方法来访问您的会话。请考虑以下示例

def show_details
  #we may use this inside a user-specific action
  User.find(session[:current_user_id])
end

如您所见,您以类似于参数的方式访问会话。存储会话并不复杂

def index
  #we have some code here to get the user_id of a specific (logged-in) user
  session[:current_user_id] = id
end

要销毁会话,只需将它分配一个 nil 值

session[:current_user_id] = nil

显示闪存消息

[编辑 | 编辑源代码]

闪存是会话中非常特殊且有用的部分。您可能已经在视图文件中发现过它。以下是它们的工作原理:如上所述,闪存很特殊。它们只存在一次,并在每次请求后被销毁。闪存可用于向用户显示错误消息或通知(例如,当用户尝试登录或其请求导致错误时)

在操作中,闪存可以使用类似于

def check
  #code that does some validation
  flash[:notice] = "Successfully logged in"
end

在视图中,您可以像这样访问它

<% if flash[:notice] -%>
    <%= flash[:notice] %>
<% end -%>
<!-- maybe some HTML-Code -->
<% if flash[:warning] -%>
    <%= flash[:warning] %>
<% end -%>

如示例所示,您不限于单个闪存。可以按您在控制器中定义的名称访问多个闪存。

华夏公益教科书