`

关于Rails的错误提示 Rails flash error不消失

阅读更多

    写下这个题目,我就想起了先贤孔乙己老人。本来的题目就想写Rails的错误提示有几种,其实,这是个看起来很简单的题目,就像回字的写法一样。

     首先,错误提示根据来源不同应该分Flash 和 error_message.

     众所周知,flash应该是来源于controller,这个设计灵感来源是flash ram闪存,快速和暂时存储。稍微准确的定义是,保存信息直到下一次redirect。那么,这就会遇到问题,如果,我们没有redirect,而是render到另一个页面,那么flash提示就会一直存在。其实,Rails为flash准备以下备用选择:

     简单讲就是
      flash.discard(:error)
     flash.now(:error)
     flash.keep(:error)


分别用来指定和改变flash的存活时间。具体参考下面:         
discard(k = nil)
Marks the entire flash or a single flash entry to be discarded by the end of the current action:

    flash.discard              # discard the entire flash at the end of the current action
    flash.discard(:warning)    # discard only the "warning" entry at the end of the current action



keep(k = nil)
Keeps either the entire current flash or a specific flash entry available for the next action:

   flash.keep            # keeps the entire flash
   flash.keep(:notice)   # keeps only the "notice" entry, the rest of the flash is discarded



now()
Sets a flash that will not be available to the next action, only to the current.

    flash.now[:message] = "Hello current action"

This method enables you to use the flash as a central messaging system in your app. When you need to pass an object to the next action, you use the standard flash assign ([]=). When you need to pass an object to the current action, you use now, and your object will vanish when the current action is done.

Entries set via now are accessed the same way as standard entries: flash[‘my-key’].

        其次,flash对应的三种,类型的页面显示是不一样的,假设你需求是希望能一样显示:
FLASH_NAMES = [:notice, :warning, :message]

<% for name in FLASH_NAMES %>
  <% if flash[name] %>
    <%= "<div id=\"#{name}\">#{flash[name]}</div>" %>
  <% end %>
<% end %>



         然后,简单说error_message
         我想说的是
                    error_message_on
                 error_messages_for
                 error.full_message


         无疑,error_message来源Model最常见使用如下:
  <% form_for :person, :url => { :action => "update" } do |f| %>
    <%= f.error_messages %>
    First name: <%= f.text_field :first_name %><br />
    Last name : <%= f.text_field :last_name %><br />
    Biography : <%= f.text_area :biography %><br />
    Admin?    : <%= f.check_box :admin %><br />
  <% end %>


error_message_on如下:
  <%= error_message_on "post", "title" %>
  # => <div class="formError">can't be empty</div>

  <%= error_message_on @post, :title %>
  # => <div class="formError">can't be empty</div>

  <%= error_message_on "post", "title",
      :prepend_text => "Title simply ",
      :append_text => " (or it won't work).",
      :css_class => "inputError" %>


    最后,关于errors.full_messages,本来是想说说,自己重写的validate和系统自己的诸如以下验证的先后调用关系的
  validates_numericality_of :start_freq, :greater_than_or_equal_to => 0, :allow_nil =>true, :only_integer => true, :less_than => 1500000001
  validates_numericality_of :stop_freq, :less_than => 1500000001, :allow_nil =>true, :only_integer => true, :greater_than_or_equal_to => 0
  validates_presence_of   :region_id,


先写简单用法吧
  class Company < ActiveRecord::Base
    validates_presence_of :name, :address, :email
    validates_length_of :name, :in => 5..30
  end

  company = Company.create(:address => '123 First St.')
  company.errors.full_messages # =>
    ["Name is too short (minimum is 5 characters)", "Name can't be blank", "Address can't be blank"]


借个地方用用
^ +\d+.

mysqldump --opt --user=root --password database > file.sql
GRANT ALL PRIVILEGES ON *.* TO 'nuser'@'%' IDENTIFIED BY 'npasswd' WITH GRANT OPTION;


http://tcgglobal.na4.acrobat.com
11
1
分享到:
评论
10 楼 shige19 2012-12-19  
夜鸣人很给力,恰好遇到一个问题,看了你的文章就给解决了,给力
9 楼 darkbaby123 2010-03-03  
原先有很长一段时间很烦恼render页面后的flash生存期,等我在Rails API上看到flash.now这个方法时,已经过去半年了……同样的还有redirect :back。
小提醒一下,文章里有些error_messages_for写错了,少了一个s
8 楼 ltl3884 2010-01-13  
总结的挺好的。。。。。
rails是不用不知道, 用的时候每天都想说DHH,你TM真是个天才!!!!
:D
7 楼 orcl_zhang 2009-11-28  
谢了.帮助很大,刚要找点关于errors的东西看看
6 楼 fireflyman 2009-08-16  
谢了,夜鸣兄.
5 楼 夜鸣猪 2009-08-16  
qichunren 写道
很好。    

我们都是一群快乐的程序员。


总是,期待着什么时候,我身边常常看到的人里有几个DHH级别的人物...
4 楼 夜鸣猪 2009-08-16  
感谢各位赏光啊
你们的关注是我一直不断前进的动
3 楼 wysrjh 2009-08-16  
不错..............
2 楼 qichunren 2009-08-14  
很好。    

我们都是一群快乐的程序员。
1 楼 netfork 2009-08-14  
总结的挺好的。。。。。
rails是不用不知道, 用的时候每天都想说DHH,你TM真是个天才!!!!

相关推荐

    Rails项目源代码

    这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何利用Rails的强大功能来创建一个允许用户上传、分享和浏览图片的应用。 1. **Rails框架基础**: Rails的核心理念是DRY(Don't...

    关于rails 3.1 cucumber-rails 1.2.0

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

    Ruby on Rails源代码

    在Ruby on Rails的源代码中,我们可以深入理解其内部工作原理,包括路由、数据库交互(ActiveRecord)、模板引擎(ERB或Haml)、测试工具(Rspec或Minitest)等核心组件。以下是一些关键知识点的详细解释: 1. **...

    Ruby on Rails入门经典代码

    本压缩包中的"Ruby on Rails入门经典代码"提供了新手学习Rails的宝贵资源,帮助初学者快速掌握这个强大的框架。 1. **Rails基础知识**: - MVC架构:Rails的核心设计模式,模型负责数据处理,视图负责展示,控制器...

    Rails 集成Open Flash Charts

    标题 "Rails 集成Open Flash Charts" 涉及的是在Ruby on Rails框架中集成Open Flash Chart这一图表库的技术细节。Open Flash Chart是一个开源的Flash图表生成器,它允许开发者通过简单的API创建各种复杂的图表,包括...

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

    在开发Web应用时,Ruby on Rails(简称Rails)框架因其高效、简洁的代码风格和强大的社区支持而备受青睐。Aptana是一款强大的集成开发环境(IDE),尤其适用于Rails项目的开发,它提供了丰富的特性来提升开发效率。...

    rails open_flash_chart

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

    Rails

    压缩包子文件的文件名称 "Ruby on Rails.pptx" 提示可能是一个关于Rails的PowerPoint演示文稿,其中可能涵盖了Rails的基础概念、安装步骤、主要组件介绍、开发流程、最佳实践,以及可能的示例代码和案例研究。...

    rails 常见灵异错误汇总

    华为编程开发规范与案例提供了关于代码组织、命名规则、注释、错误处理等方面的指导,有助于创建更健壮、可维护的Rails应用。例如,遵循DRY(Don't Repeat Yourself)原则,避免代码重复;使用面向对象设计原则,如...

    ruby_on_rails 源代码上

    Ruby on Rails,简称Rails,是基于Ruby编程语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和可读性,同时强调“约定优于配置”的原则。Rails的核心理念是“开发应该是一种...

    rails2-sample

    从给定的文件信息来看,我们正在探讨的是一本关于Ruby on Rails的书籍,书名为《Simply Rails2》,作者是Patrick Lenz。本书旨在为初学者提供深入理解Ruby on Rails框架的指南,从基础概念到高级主题均有涵盖,是...

    rails2.3.2

    描述中的 "ruby and rails 的框架rails-2.3.3.zip" 提到的是 Rails 的另一个版本 2.3.3,尽管与标题中的版本号不完全匹配,但我们可以推断这是关于 Rails 2.3.x 系列的讨论。这个压缩包很可能包含了 Rails 框架的源...

    Ruby on Rails Tutorial Learn Rails by Example 的源代码

    《Ruby on Rails Tutorial: Learn Rails by Example》是Rails学习者们常常参考的一本书,由Michael Hartl撰写。这本书通过实际的示例项目“sample_app”引导读者深入理解Rails框架的各个方面。现在,我们来详细探讨...

    rails指南 中文版

    Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,强调“约定优于配置”(Conventions over Configuration)和“Don't Repeat Yourself”(DRY,不要...

    web开发之rails最新调试通过购物车代码

    本压缩包中的"web开发之rails最新调试通过购物车代码"是关于使用Rails进行Web应用开发的一个实例,特别是针对购物车功能的实现。 购物车是电商网站的核心部分,它允许用户选择商品并保存这些选择以便后续购买。在...

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    ### Ruby on Rails Guides v2 - Ruby on Rails 4.2.5 #### 一、重要概念及基础假设 - **重要概念**:本指南旨在帮助读者深入理解Ruby on Rails(以下简称Rails)4.2.5版本的核心功能与最佳实践。 - **基础假设**:...

    rails向导打包

    7. **Rails 命令行工具和 Rake 任务**: Rails 提供了一系列命令行工具,如 `rails server`、`rails generate` 和 `rails dbconsole`,帮助开发者快速启动、生成代码和操作数据库。Rake 是一个构建工具,用于执行任务...

    railsAPI

    Rails提供了一些内建的错误处理机制,如 rescued exceptions 和 custom error classes。同时,模型中的validations可以帮助确保数据在被保存到数据库之前满足一定的条件。 测试是Rails开发流程的重要部分。Rails...

Global site tag (gtag.js) - Google Analytics