通常rails页面的错误信息提示都是放在首部用 error_message_for,生成这样的错误提示:
这样很快就把所有错误信息都显示出来了。但是有一个缺点,就是灵活性太差。感觉error_message_for就像rails的scaffold一样可以快速搭建一个curd应用,但是定制性不高。
还好,rails的可扩展能力是很强的,你不喜欢里面的某一方法,你甚至可以去把他的源代码改了(当然不推荐这样做...),所以只有自己动手..
看了下源码:
# Returns the Errors object that holds all information about attribute error messages.
def errors
@errors ||= Errors.new(self)
end
这一句就够了:原来每个ActiveRecord的实例都有一个errors方法。这个@errors就是所有rails其他错误信息处理封装的基础。
自己写了一个对每个model的field错误信息提取到div的方法,同时把汉化也加进去了,很简单。。
module ApplicationHelper
def error_div(model, field, field_name)
return unless model
field = field.is_a?(Symbol) ? field.to_s : field
errors = model.errors[field]
return unless errors
%Q(
<div class="errors">
#{errors.is_a?(Array) ? errors.map{|e| field_name + e}.join(",") : field_name << errors}
</div>
)
end
end
demo:
validation:
class Post < ActiveRecord::Base
validates_presence_of :title, :message => "不能为空"
validates_length_of :title, :in => 2..10, :message => "长度不正确"
end
view:
<% form_for(@post) do |f| %>
<p>
<%= f.label :title %><br />
<%= f.text_field :title %><%= error_div(@post, :title, "标题")%>
</p>
<p>
<%= f.label :description %><br />
<%= f.text_area :description %>
</p>
<p>
<%= f.submit 'Create' %>
</p>
<% end %>
效果1:
效果2:
分享到:
相关推荐
华为编程开发规范与案例提供了关于代码组织、命名规则、注释、错误处理等方面的指导,有助于创建更健壮、可维护的Rails应用。例如,遵循DRY(Don't Repeat Yourself)原则,避免代码重复;使用面向对象设计原则,如...
这些支持文件增强了Cucumber-Rails的灵活性和可定制性。 结合Rails 3.1的Asset Pipeline和Cucumber-Rails 1.2.0,开发者能够构建出一个既高效又健壮的Web应用程序。Asset Pipeline优化了前端资源的处理,Cucumber-...
Rails的核心理念是DRY(Don't Repeat Yourself),它鼓励开发者编写简洁、可复用的代码。框架提供了丰富的内置功能,如路由、ORM(对象关系映射)、数据库迁移和强大的脚手架工具,帮助快速开发应用程序。 2. **...
6. **错误处理**:Rails API鼓励返回标准的HTTP状态码和结构化的错误消息,以便客户端可以理解并适当地处理错误。 7. **JSON Schema**:通过使用JSON Schema,开发者可以定义API的数据结构和验证规则,增强API的可...
《Rails101_by_rails4.0》是一本专注于Rails 4.0.0版本和Ruby 2.0.0版本的自学教程书籍,它定位于中文读者,旨在成为学习Rails框架的参考教材。Rails(Ruby on Rails)是一个采用Ruby语言编写的开源Web应用框架,它...
在开发Web应用时,Ruby on Rails(简称Rails)框架因其高效、简洁的代码风格和强大的社区支持而备受青睐。Aptana是一款强大的集成开发环境(IDE),尤其适用于Rails项目的开发,它提供了丰富的特性来提升开发效率。...
因此,通过学习Rails,读者不仅能掌握如何构建高效、可维护的Web应用,还能在Ruby编程方面得到显著提升。 #### 标签:rails、ruby 这两个标签指出了本书的主要关注点。**Rails**指的是Ruby on Rails框架,它是本书...
### Ruby on Rails Guides v2 - Ruby on Rails 4.2.5 #### 一、重要概念及基础假设 - **重要概念**:本指南旨在帮助读者深入理解Ruby on Rails(以下简称Rails)4.2.5版本的核心功能与最佳实践。 - **基础假设**:...
Rails 4增强了配置选项,允许开发者更灵活地定制Rails的行为,例如调整日志级别,设置默认时区等。 10. **测试与性能** Rails 4改进了测试框架,包括更好的测试覆盖率工具和更快的测试运行速度。同时,`active_...
Rails指南中文版是针对...此外,Rails社区活跃,有大量的插件和gem可供扩展,为开发者提供了丰富的资源和强大的支持。通过深入学习和实践,你将成为一名高效的Rails开发者,能够创建出优雅、高效且易于维护的Web应用。
在本篇内容中,我们将深入探讨如何利用Ruby on Rails(简称Rails)这一强大的Web应用程序框架来构建可伸缩且易于维护的RESTful API。Rails以其简洁优雅的语法、高效的开发速度以及良好的社区支持而闻名,这使得它...
在Rails 4.0.0中,引入了专门针对API开发的Rails API模式,为开发者提供了构建高效、可维护的RESTful API的工具。 一、Rails API模式的核心特点: 1. 轻量级:Rails API模式去掉了不必要的视图层,使得应用更加轻便...
3. **国际化和本地化**: Rails支持国际化(i18n)和本地化(l10n),允许开发者轻松地为不同的语言和地区定制应用程序。这通常涉及到对字符串资源进行管理,以及日期和时间格式的调整。 ### 结论 通过上述知识点的学习...
最后,测试是任何Rails应用不可或缺的一部分。使用RSpec进行行为驱动开发(BDD)测试,Rake任务自动化测试执行,确保购物车系统在功能上和性能上的健壮性。 总结,构建Rails敏捷开发的购物车系统涉及了模型-视图-...
标题 "Rails" 指的是 Ruby on Rails,一个开源的Web应用程序框架,它基于Ruby编程语言,遵循MVC(模型-视图-控制器)架构模式。Rails由David Heinemeier Hansson在2004年创建,其设计理念是强调代码的简洁性、DRY...
[Pragmatic Bookshelf] Crafting Rails Applications Expert Practices for Everyday Rails Development (E-Book) ☆ 图书概要:☆ Rails 3 is a huge step forward. You can now easily extend the framework, ...
同时,Rails社区活跃,有许多优秀的资源和教程可供参考,例如官方文档、Stack Overflow、GitHub上的开源项目等,都是学习的好去处。 总之,《Ruby On Rails》中文教材将引导你进入这个强大而高效的Web开发世界,...
- **深入实践CRUD功能**:详细讲解如何具体实现CRUD操作,包括数据验证、错误处理等高级特性。 - **MVC架构与RESTful概念**:介绍模型(Model)、视图(View)、控制器(Controller)三者之间的关系以及RESTful API的设计...