今天做CRM系统中的用户的添加、显示模块;
一、添加模块
在做添加用户模块时,用了简便的方法——在模型中用检验,validates_presence_of,validates_conformation_of,等来检验模型的属性;当错误生成时,用系统自动生成的样式——scoffold.css进行错误提示;
以前自己写程序时,要么用自己编写的代码进行防错处理;用rails的检验方法时经常发生有错误但没提示的情况;这次弄时又差点没显示出来;以下将其中几个关键的地方总结一下:
1、在添加前,先初始化一个对象,例如:要添加一个用户,可以先初始化一个用户对象:
@user = User.new()
2、添加用户的页面形成后,在保存用户的action中也需要新建一个对象,
@user = User.new
然后需要分两种情况,代码为:
if @user.save
flash[:notice] = '创建用户成功!'
redirect_to :controller=>'admin',:action=>'index'
else
render :action=>'index'
end
3、在视图中需要添加一段代码显示错误信息:
<%=error_messages_for("user")%>
这次没显示错误提示的原因就是在第2步中没有分情况,即在@user.save失败时,没有用render :action=>'index';下次需要注意。
二、列出用户
在列出用户模块中有搜索用户的功能,搜索项,用户可以填,也可以不填,以前用比较笨的方法:
sql = "1=1"
sql += " and user_name = :user_name" unless params[:user_name].blank?
sql += " and first_name = :first_name" unless params[:first_name].blank?
sql += " and last_name = :last_name" unless params[:last_name].blank?
.............
以上方法可以实现搜索的功能,但过程复制,代码也多;如果可填项少还好,万一有十几个可填项,那代码就太长了;
改进后的方法:
fields = %w{user_name first_name last_name status department province city is_admin}
sql = "1=1"
fields.each do |field|
if params[field.to_sym].class == Array and !params[field.to_sym].include?("")
sql += " and #{field} in (:#{field})"
elsif params[field.to_sym].class != Array and !params[field.to_sym].blank?
sql += " and #{field} = :#{field}"
end
end
@users = User.find(:all,:conditions=>[sql,params])
先把所有的属性组成一个数组,然后依次检验,如果为所得属性为数组,则sql中用in检验;
一、添加模块
在做添加用户模块时,用了简便的方法——在模型中用检验,validates_presence_of,validates_conformation_of,等来检验模型的属性;当错误生成时,用系统自动生成的样式——scoffold.css进行错误提示;
以前自己写程序时,要么用自己编写的代码进行防错处理;用rails的检验方法时经常发生有错误但没提示的情况;这次弄时又差点没显示出来;以下将其中几个关键的地方总结一下:
1、在添加前,先初始化一个对象,例如:要添加一个用户,可以先初始化一个用户对象:
@user = User.new()
2、添加用户的页面形成后,在保存用户的action中也需要新建一个对象,
@user = User.new
然后需要分两种情况,代码为:
if @user.save
flash[:notice] = '创建用户成功!'
redirect_to :controller=>'admin',:action=>'index'
else
render :action=>'index'
end
3、在视图中需要添加一段代码显示错误信息:
<%=error_messages_for("user")%>
这次没显示错误提示的原因就是在第2步中没有分情况,即在@user.save失败时,没有用render :action=>'index';下次需要注意。
二、列出用户
在列出用户模块中有搜索用户的功能,搜索项,用户可以填,也可以不填,以前用比较笨的方法:
sql = "1=1"
sql += " and user_name = :user_name" unless params[:user_name].blank?
sql += " and first_name = :first_name" unless params[:first_name].blank?
sql += " and last_name = :last_name" unless params[:last_name].blank?
.............
以上方法可以实现搜索的功能,但过程复制,代码也多;如果可填项少还好,万一有十几个可填项,那代码就太长了;
改进后的方法:
fields = %w{user_name first_name last_name status department province city is_admin}
sql = "1=1"
fields.each do |field|
if params[field.to_sym].class == Array and !params[field.to_sym].include?("")
sql += " and #{field} in (:#{field})"
elsif params[field.to_sym].class != Array and !params[field.to_sym].blank?
sql += " and #{field} = :#{field}"
end
end
@users = User.find(:all,:conditions=>[sql,params])
先把所有的属性组成一个数组,然后依次检验,如果为所得属性为数组,则sql中用in检验;
发表评论
-
08/1/8
2009-03-08 09:49 5421,sysdate oracle中表示今天的日期函数不是no ... -
08/1/7
2009-03-08 09:48 5251、<%=select table_name,attri ... -
mysql函数
2009-03-08 09:47 8741、coalesce(a,b,c):返回参数列表中第一个不为n ... -
笔记6
2009-03-08 09:46 6311、在模型中动态生成代码的函数module_eval 有时需 ... -
08/12/31
2009-03-08 09:45 657mysql中的一些用法: 1、user():列出数据库的用户名 ... -
08/12/30
2009-03-08 09:44 804一、date_select(object_name,metho ... -
08/12/29
2009-03-08 09:43 705escape(), encodeURI()和encodeUR ... -
08/12/26
2009-03-08 09:43 7271、Table1.find(:all,:conditions= ... -
08/12/25
2009-03-08 09:42 7642、camelize 功能与ruby中的capitalize有 ... -
08/12/24
2009-03-08 09:41 7151、在知识库系统中添加了上传和播放mp3功能。 2、对考勤系 ... -
08/12/22
2009-03-08 09:31 739由于在周末的时候在系统的“项目”模块中添加了“项目类别”模块 ... -
08/12/17
2009-03-08 09:30 720今天本打算利用javascript做一个系统的导航的,所以在网 ... -
08/12/5
2009-03-08 09:29 669今天将系统给老板看了,老板提了几点意见: 1、在各模块的列表中 ... -
08/11/10
2009-03-08 09:25 6181、实现了将数据库中的记录按不同的分页条件进行分页; 以往都是 ... -
笔记5
2009-03-08 09:23 4521、解决了昨天完成的搜索记录中还存在的问题: 现象:搜索条件中 ... -
笔记4
2009-03-08 09:19 6921,The old way var a = document ... -
笔记3
2009-03-08 09:16 615今天主要看了下sql语句在oracle中的实现 一、orac ... -
笔记2
2009-03-08 09:12 674昨天,已经弄好了项目的显示和添加模块,今天继续完成了项目职能的 ...
相关推荐
S7-200 Smart入门笔记1-8 程序合集 S7-200 Smart入门笔记1——流水灯 按钮 S7-200 Smart入门笔记1——流水灯 定时器 S7-200 Smart入门笔记2——读时钟 S7-200 Smart入门笔记3——呼吸灯 S7-200 Smart入门笔记4——...
ssh学习笔记1 ssh学习笔记1 ssh学习笔记1 ssh学习笔记1 ssh学习笔记1 ssh学习笔记1 ssh学习笔记1
JAVAEE系列笔记1.pdfJAVAEE系列笔记1.pdfJAVAEE系列笔记1.pdfJAVAEE系列笔记1.pdf
公开课笔记1-2——线性规划、梯度下降、正规方程组 公开课笔记3——局部加权回归、逻辑斯蒂回归、感知器算法 公开课笔记4——牛顿方法、指数分布族、广义线性模型 公开课笔记5——生成学习、高斯判别、朴素贝叶斯 ...
《斯坦福机器学习公开课笔记1-5》是博主“心张烟酰胺”根据斯坦福大学的机器学习公开课整理的一系列学习笔记。这些笔记详细记录了课程的前五讲内容,旨在帮助读者深入理解机器学习的基本概念、原理和应用。在这一千...
java学习笔记1(java io/nio)设计模式
androidStudio安装笔记1,基本下载,安装,通用设置。androidStudio安装笔记1,基本下载,安装,通用设置。
JAVA笔记1.pdf
struts2.0学习笔记1 自己动手做的还算可以的 ]struts2.0学习笔记1 自己动手做的还算可以的struts2.0学习笔记1 自己动手做的还算可以的struts2.0学习笔记1 自己动手做的还算可以的
网络工程师复习笔记1至15章,对于要参加11月份计算机水平考试的非常有用
python练习笔记1
笔记1.md
android开发笔记1,分享资料,希望对您的学习有所帮助。
ELK学习笔记1
Docker 学习笔记1
day22笔记1
基尔霍夫定律笔记1
计算机网络笔记1
Docker学习笔记1
读书笔记:spring boot 实战学习笔记 1