rails针对model提供了完善的校验功能,但有时候,我们的表单并不对应到model,比如login表单,比如search表单,这方面rails并没有给出很好的解决方案(verify太简陋),我是这么实现的(实验阶段):
1、修改ApplicationController
class << self
def validate_action(action_name,options={})
config = {}
yield config if block_given?
return false if config.empty?
filter_opts={:only => action_name.to_sym}
options={:render=>{:action=>action_name.to_s}} if options[:render].nil? || options[:redirect_to].nil?
before_filter(filter_opts) do |c|
c.send :validates,config,options
end
end
end
private
def validates(validate_options={},options={})
@errors = {}
has_error=false
validate_options.each do |key,config|
field = key.to_sym
if params[field].nil? or params[field].empty?
@errors[field] = config[:message] || ""
has_error = true
end
end
if has_error
unless performed?
render(options[:render]) if options[:render]
redirect_to(options[:redirect_to]) if options[:redirect_to]
end
return false
else
return true
end
end
2、需要检验的Controller增加检验配置:
class TestController < ApplicationController
validate_action :test do |config|
config[:loginame] = {:message=>"登陆名不能为空"}
config[:password] = {:message=>"密码不能为空"}
end
def index
render :action=>"test"
end
def test
redirect_to :controller=>"/"
end
end
3、增加表单:
<%
full_messages = []
@errors.each() do|attr,msg|
full_messages << msg
end unless @errors.nil?
%>
<%if !full_messages.empty?%>
<ol>
<%full_messages.each do |msg|-%>
<li><%=msg%></li>
<%end-%>
</ol>
<%end%>
<%form_tag :action=>"test" do%>
<%= text_field_tag "loginame",params[:loginame]%>
<%= password_field_tag "password",params[:password]%>
<input type="submit">
<%end%>
分享到:
- 2007-12-25 12:39
- 浏览 1934
- 评论(1)
- 论坛回复 / 浏览 (1 / 2722)
- 查看更多
相关推荐
通过将许多ActiveModel::Validation功能移植到JavaScript,Judge可以轻松地对Rails进行客户端表单验证。 最常见的验证通过存储在HTML5数据属性中的JSON字符串进行,并且仅在客户端执行。 无论您在何处,Judge都为...
第三章“Rails中的视图布局和辅助方法”,侧重于MVC架构中的视图部分,包括如何构建表单视图、实现AJAX交互,以及模板引擎的使用。模板引擎允许开发者使用Ruby代码和HTML混合的方式创建动态视图,大大简化了Web页面...
SwiftCop 是一个灵感来源于 Ruby on Rails (ROR) 中的 Active Record 的表单验证工具,专为 Swift 开发者设计。在 ROR 中,Active Record 提供了一种强大的方式来处理模型的数据验证,使得开发者可以方便地定义和...
在随后的“Rails框架“部分中,作者深入介绍了Rails框架的各个组件。 除了上述两部分外,对Rails缺乏了解的读者应该首先阅读“起步”部分,通过一个最简单的应用示例感性了解这个时下热门的web框架。不熟悉Ruby的...
例如,你可以利用`remote: true`属性在Rails的链接或表单中启用Ajax请求。 7. **配置Asset Pipeline**:在`application.js`中引入Spine.js及其模块,并确保它们按正确顺序加载。 8. **测试与调试**:通过浏览器的...
- **Scaffold**: Rails 提供的脚手架功能,快速生成 CRUD(Create, Read, Update, Delete)功能的基本代码。 - **REST 架构**: - 是一种软件架构风格,用来指导客户端与服务器之间的交互。 - 在 Rails 中,每个...
- **数据校验**:对用户提交的信息进行合法性检查,防止恶意攻击,如SQL注入、XSS攻击等。 3. **数据库管理**: - **数据库设计**:创建一个用于存储留言的数据库表,包含字段如留言ID、用户名、内容、时间戳等。...
这种方式可以即时反馈用户的输入错误,而无需等待服务器响应,从而提高表单提交的效率。 **具体步骤如下:** 1. **创建自定义验证器模块**:首先,需要创建一个继承自`ClientSideValidations::Middleware::Base`的...
React堆 指示 该项目是通过引导的。 您将在下面找到一些有关如何执行常见任务的信息。 您可以在找到本指南的最新版本。...Ruby on Rails 在开发中代理API请求 配置代理后出现“无效的主机头”错误 手
Grails是一款基于Groovy语言的开源Web应用框架,它借鉴了Ruby on Rails的设计理念,提供了丰富的自动化工具和插件系统,使得开发过程更为高效。其中,脚手架(Scaffolding)是Grails的一大特色功能,它能自动生成...
5. 验证用户输入:当用户提交表单时,使用`captcha.ValidateID`方法校验用户输入的验证码是否正确。 在`captcha-master`这个压缩包中,可能包含了`Package captcha`的源码,你可以深入研究其内部实现,了解验证码...
1.1.2.2 防止对数据库的攻击:对表单输入的数据进行校验和处理 数据输入可能引发许多问题。因为 HTML 和数据库的限制,数据中总包含特定的符号—举例来说,省略符号和引号—可能导致你的数据库遭到攻击,最终得到你...
这些规则可以应用于各种场景,如表单提交、API 输入验证或者业务逻辑中的数据校验。通过使用 validateur,你可以创建自定义验证规则,也可以利用内置的验证函数,如非空、长度限制、正则表达式匹配等。 验证过程...
下面将详细讨论与这个主题相关的几个关键知识点: 1. **HTML基础知识**:HTML由一系列元素组成,每个元素用标签表示,如`<html>`、`<head>`、`<body>`等。元素可以嵌套,形成复杂的网页结构。例如,`<form>`标签...
它提供了许多有用的特性,如数据库驱动网站应用的快速搭建、安全认证、会话管理、动态路由、密码加密、表单校验、管理界面自动生成、邮件发送等。 5. Grasshopper:Grasshopper是一个功能丰富、灵活的Node.js框架,...
在"MiniStruts"中,每个表单对应的ActionForm类会持有用户的输入数据,并在Action类中进行验证和处理。ActionForm的使用有助于保持Action类的简洁,将数据处理与业务逻辑分开。 3. **DispatcherServlet**:在...
2.11.3 表单上传.......................................................................................40 2.11.4 追加上传...................................................................................