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 -%>
如示例所示,您不限于单个闪存。可以按您在控制器中定义的名称访问多个闪存。