开发时遇到需要带参数的页面跳转。可以使用http中get方法直接跟参数的形式去完成这个小问题,但是看着整个url很长很杂,所以想到了session来解决这个问题。在rails3中,session用法不难,难的是要控制session的有效使用时间、存储量大小等后续问题。
1.使用范围
controller和view中可用
2.保存的数据
◇一般保存会话进行的必要数据,如保存登录用户的的ID:
user = User.find_by_name(params[:name])
session[:user_id] = user.id if user
◇尽量不要直接保存类实例到session里面。因为如果这个实例对应的表数据被更新,
而没有同时更新session里保存的该实例,以后参照的session里的数据将成为旧的。
如:
⇒ user = User.find_by_name(params[:name])#假设初值为 用户名="xxx"
session[:current_user] = user if user #session[:current_user].name="xxx"
⇒ 处理过程中用户修改了自己的name为"yyy" #用户名="yyy"
而程序对session没做任何处理
⇒ 之后参照session里的用户名 #session[:current_user].name="xxx"
◇session保存形式
默认情况下rails程序的session数据保存在cookie中。
会话最早建立的时候WEB程序把cookie发给客户端浏览器,
之后每次客户端提交请求时浏览器都会把cookie的数据一起提交给服务器,用于验证。
但是推荐把session数据保存到数据库中,原因:
1.rails2.3.5中cookie中保存数据不能超过4k,否则会报异常。
2.大型系统的WEB服务器一般为了负载平衡会使用几台服务器分担处理。
这样同一个会话的几次请求可能会被分配到不同的服务器去。
为了使各服务器能共享session的数据,所以把session数据存到数据库中比较妥当。
(参考:http://goldyrain.blog.hexun.com/46941830_d.html)
一:创建
创建session表:
执行migration:
在
config/initializers/session_store.rb中把下面语句的注释去掉,目的是要告诉rails使用ActiveRecord去管理session。
然后重启一下服务器就可以运行了。
二、具体运用
下面是ROR+Ext的应用,具体是把一些参数赋值给session。
长长的url,后面带着参数:
应用上面方法简洁了:
注意:使用session要注意适时清除与限制。
清除session可以直接赋空值:
三、拓展
提供有几个学习链接:
分享到:
相关推荐
Rails :: SessionCookie 快速,松散耦合的请求有关经过Cookie验证的应用程序的规范。 为什么 可能,您可能已经看到了很多像这样的代码: # config/initializers/session_store.rb Rails . application . config . ...
3. **log**:日志目录,存储应用运行时的日志信息,有助于调试和问题排查。 4. **vendor**:供应商目录,通常存放第三方库或依赖,如JavaScript库、宝石(gem,Ruby的包管理器)等。 5. **config**:配置目录,...
1. ** Sessions 显示**:在开发过程中,Session数据往往承载着用户状态和会话信息,查看这些数据有助于理解用户行为和应用逻辑。 2. ** 请求参数**:Rails Footnotes能够展示HTTP请求的所有参数,包括GET和POST数据...
### Rails 3 in Action 关键知识点解析 #### 一、Ruby on Rails 框架简介 **Rails 3 in Action** 这本书介绍了 **Ruby on Rails**(简称 Rails)这一 Web 开发框架的核心概念和技术细节。Rails 自发布以来便以其...
3. **config**:配置文件的集合,包括数据库连接、路由设置、应用环境等。 4. **db**:数据库相关的文件,如迁移(migrations)用于数据库结构的版本控制。 5. **lib**:自定义库和扩展代码存放的地方。 6. **log...
Rails提供了Session存储,可以用来临时存储用户的购物车信息,但这种存储方式不适用于持久保存。因此,通常我们会将购物车内容存入数据库,以便用户在不同会话之间保持购物车状态。在添加或删除商品时,更新购物车...
5. **会话(Session)**:Rails中的会话管理允许在多个请求之间保持状态,这对于购物车尤为重要,因为用户可能需要在不同时间查看或修改购物车。 6. **数据库迁移(Database Migrations)**:Rails提供了方便的工具...
在Rails中使用SSL(安全套接层)是构建Web应用时确保数据传输安全的重要步骤。Rails框架支持在应用程序中轻松集成SSL,以保护用户敏感信息,如登录凭据和支付详情。以下是一些关于在Rails中实施SSL的关键知识点: 1...
7. **会话和cookies**:讲解如何使用Rails的session和cookie机制来管理用户状态。 8. **表单和链接**:介绍如何创建HTML表单以及使用Rails的辅助方法创建链接,实现用户交互。 9. **部署**:讲解如何将应用程序...
这种方式比传统的session更加安全,尤其适用于移动应用和API服务。 综上所述,这个项目涵盖了以下知识点: 1. Jasonette:JSON驱动的原生移动应用框架,简化跨平台开发。 2. Ruby on Rails:基于Ruby的Web开发框架...
1. **Session**: 在Rails中,session用于在客户端浏览器和服务器之间存储临时状态。当用户成功登录后,会话ID会被存储在用户的cookie中,服务器根据这个ID识别用户,从而实现会话持久化。 2. **哈希和加密**: 为了...
Ruby on Rails,简称RoR,是由Ruby编程语言构建的开源Web应用框架,以其高效和简洁的设计原则闻名。RoR遵循MVC(Model-View-Controller)架构模式,旨在简化Web应用开发,降低开发者的工作负担,提高开发效率。该...
除了上述两部分外,对Rails缺乏了解的读者应该首先阅读“起步”部分,通过一个最简单的应用示例感性了解这个时下热门的web框架。不熟悉Ruby的读者应该阅读“附录”部分中的“Ruby简介”,以便了解Ruby的基本语法与...
- **创建第一个 Rails 应用**:使用命令 `rails new myapp` 可以快速创建一个新的 Rails 应用程序,其中 `myapp` 是应用的名称。 - **启动服务器**:进入应用目录后,通过命令 `rails server` 启动服务器。访问 `...
Ruby on Rails(RoR)是一个开源的Web应用框架,它遵循MVC(模型-视图-控制器)架构模式,以Ruby编程语言为基础,为开发者提供了高效且简洁的开发体验。 本项目的核心知识点包括: 1. **Ruby语言基础**:Ruby是一...
适用于 Ruby on Rails 的 Todolist 应用程序 现场演示 要求 吉特 Ruby 导轨 部署 克隆这个存储库: git clone https://github.com/mdluo/todos.git 然后进入目录: cd todos 安装包: bundle install 然后运行...
**标题解析:**“ruby on rails 教程”直指文档内容旨在教授Ruby on Rails框架的基础知识和应用技巧,Ruby on Rails(RoR)是一种用于Web开发的开源框架,基于Ruby语言,它遵循MVC(模型-视图-控制器)架构模式,...