`
半人马
  • 浏览: 23077 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

rails, 跨越三个Request的flash数据

阅读更多
关于flash中数据的生命周期,标准的说法是“写入flash中的数据将在下一个request处理完毕时清除”,但是如果在before_filter中将数据写入flash,则该数据的生命周期将跨越三个request,如下面的controller:
ruby 代码
 
  1. before_filter :redirect_filter:only => :test_flash  
  2. def redirect_filter 
  3.     flash[:written_by_filter]='xyz'
  4.     redirect_to :action=>:test_flash_dest and return false  
  5. end  
  6.   
  7. def test_flash  
  8. end  
  9.   
  10. def test_flash_dest  
  11. end  
测试页面 test_flash_dest.rhtml如下:
ruby 代码
 
  1. <div>flash[:written_by_filter]=<%= flash[:written_by_filter] %></div>  

我们用浏览器访问test_flash action,会被重定向到test_flash_dest并显示"flash[:written_by_filter]=xyz",这时我们刷新一下,页面上仍旧显示“flash[:written_by_filter]=xyz”,再次刷新时才显示“flash[:written_by_filter]=”。

我不知道这是不是rails的bug,只是第一次发现这种行为时还是吃惊了一把。猜想rails是把调用before_filter的request及redirect_to的request视作同一个request,因为将上面代码中的
ruby 代码
 
  1. flash[:written_by_filter] = 'xyz'  
改为
ruby 代码
 
  1. flash.now[:written_by_filter] = 'xyz'  
则'xyz'数据能够如我们希望的那样仅跨越两个request
分享到:
评论

相关推荐

    Rails 集成Open Flash Charts

    7. **源码分析**: 如果你有`pullmonkey-open_flash_chart-8f0b61a`这个项目的源码,可以深入研究其内部实现,了解如何与Rails的MVC结构协同工作,以及它是如何处理数据和生成图表的。 通过上述步骤,你可以在Rails...

    rails open_flash_chart

    "Rails Open Flash Chart" 是一个基于Ruby on Rails框架的库,用于在Web应用程序中生成交互式的Flash图表。这个库允许开发者轻松地创建各种统计图表,如折线图、柱状图、饼图等,以便更好地可视化数据。由于Flash在...

    batch_request_api, 在 Rails 应用程序上,提供批处理操作的ruby 中间件.zip

    batch_request_api, 在 Rails 应用程序上,提供批处理操作的ruby 中间件 batch_request_api 用于实现批量创建。更新和删除的Rails 中间件 gem 。可以定制的中间件批量创建。更新和删除记录或者并行删除记录安装将...

    jquery-datatables-rails, 用于 Rails的jquery数据表 gem.zip

    jquery-datatables-rails, 用于 Rails的jquery数据表 gem jquery-datatables-rails 这个 gem 为 jQuery DataTables插件提供了方便,以便与 Rails 资产pipleine结合使用。 它提供所有基本的datatable文件,以及一些...

    跨越边界 Ajax on Rails

    **Ajax on Rails:跨越边界的Web交互技术** Ajax(Asynchronous JavaScript and XML)技术的引入,为Web应用程序带来了革命性的变化,它使得页面无需刷新就能实现数据的动态更新,极大地提升了用户体验。Rails作为...

    Rails项目源代码

    MVC模式将应用程序分为三个主要部分:模型(Model)处理数据逻辑,视图(View)负责显示用户界面,控制器(Controller)协调模型和视图的交互。在这个图片分享项目中,模型可能包括`User`(用户)、`Image`(图片)...

    跨越边界:REST on Rails

    Ruby on Rails是一个突然流行起来的框架,充当着Ruby编程语言的催化剂。随着Ruby的经验不断成功,开发人员开始寻求把他们的Ruby应用程序与用其他语言编写的应用程序集成。Rails对Web服务提供了优秀的支持。本文介绍...

    Rails101_by_rails4.0

    Rails(Ruby on Rails)是一个采用Ruby语言编写的开源Web应用框架,它遵循模型-视图-控制器(MVC)的架构模式,设计用来快速开发数据库驱动的动态网页。随着Rails版本的更新迭代,此书聚焦于一个特定的版本,帮助...

    rails2-sample

    MVC是Rails的核心架构之一,这一章节将详细介绍这三个组件的作用和相互关系。模型负责与数据库交互,管理数据;视图用于展示数据给用户;控制器则处理用户请求,协调模型和视图之间的操作。了解并正确运用MVC模式是...

    Rails 101 入门电子书

    - 测试安装: 创建一个简单的Rails应用来验证是否成功安装。 #### 五、练习作业0-Hello World - **目标**: - 学习如何创建第一个Rails应用程序。 - **过程**: - 创建新项目。 - 设置数据库配置。 - 创建控制器...

    Ruby on Rails中MVC结构的数据传递解析

    在Ruby on Rails中,MVC模式的三个主要组件各有其职责: - Model(模型)负责与数据库交互,管理数据的存取和业务逻辑处理。 - View(视图)负责展示数据给用户,即应用程序的用户界面。 - Controller(控制器)负责...

    使用Aptana+Rails开发Rails Web应用(中文)

    在app目录下,你可以找到views、controllers、models等子目录,它们分别对应视图、控制器和模型三个核心组件。 接下来,我们将探讨Rails的MVC(模型-视图-控制器)架构。模型负责数据操作,视图用于展示用户界面,...

    Rails

    标题 "Rails" 指的是 Ruby on Rails,一个开源的Web应用程序框架,它基于Ruby编程语言,遵循MVC(模型-视图-控制器)架构模式。Rails由David Heinemeier Hansson在2004年创建,其设计理念是强调代码的简洁性、DRY...

    应用Rails进行敏捷Web开发中文第三版

    《应用Rails进行敏捷Web开发》中文第三版是针对Ruby on Rails框架的一本详尽指南,主要聚焦于Rails 2.2.2版本。Ruby on Rails(简称Rails)是一款基于Ruby编程语言的开源Web应用程序框架,它遵循“Don't Repeat ...

    关于rails 3.1 cucumber-rails 1.2.0

    Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其对于Ruby on Rails框架的测试和自动化流程。本文将深入探讨这两个组件,以及它们如何协同工作来增强软件开发的效率和质量。 首先,...

    Ruby-RailsAdmin一个Rails引擎提供了一个易于使用的界面来管理您的数据

    RailsAdmin 是一个基于Ruby on Rails的后台管理界面引擎,它允许开发者快速创建和管理应用程序的数据,而无需从零开始编写复杂的前端界面。 RailsAdmin 的核心功能包括: 1. 数据CRUD操作:RailsAdmin 提供了完整...

    railsAPI

    Rails API 是一个强大的框架,用于构建高效、可扩展的Web应用程序。它基于Ruby编程语言,遵循MVC(模型-视图-控制器)架构模式,使得开发者可以轻松地处理数据存储、用户界面和业务逻辑。Rails API 特别适用于构建...

    好用的rails 2.0 Api 文档

    Rails的核心在于MVC设计模式,它将应用分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。模型负责数据处理和业务逻辑,视图则呈现用户界面,而控制器作为两者之间的协调者,处理用户的请求并...

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    #### 三、创建一个新的Rails项目 - **步骤**:通过命令行使用`rails new project_name`来初始化一个新的Rails项目。 - **结构**:新项目将包含默认的目录结构,如`app`、`config`、`db`等,分别用于存放应用程序...

Global site tag (gtag.js) - Google Analytics