笔记1

今天做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检验;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值