update_attributes更新一定要所有的属性都写上吗?怎么写部分的属性不能更新成功呢?
页面部分,如果点了修改密码的checkbox会把新密码的两个文本框显示出来,让用户输入新的密码..否则是不能输入的..
<% form_tag :action => "update",:id => @user do %>
<table width="100%" border="0" cellpadding="1" cellspacing="1" class="date_table">
<tr>
<td colspan=2><%= error_messages_for 'user' %></td>
</tr>
<tr>
<td width="70">名字:</td>
<td><%= @user.name %></td>
</tr>
<tr>
<td>旧密码:</td>
<td>
<%=password_field :user, :old_password, :size => 15 %>
<%=check_box_tag :change_password, "true",false,:onclick => "changePassowrd(this)" %>修改密码
<script>$('change_password').checked = false;</script>
</td>
</tr>
<tr style="display:none;" id="txtPwd1">
<td>密码:</td>
<td><%=password_field :user, :password, :size => 15 %></td>
</tr>
<tr style="display:none;" id="txtPwd2">
<td>确认密码:</td>
<td><%=password_field :user, :password_confirmation, :size => 15 %></td>
</tr>
<tr>
<td>权限:</td>
<td><%= select(:user, :level , @types) %></td>
</tr>
<tr>
<td colspan="2">
<%= submit_tag "修改用户信息" %>
<%= return_page "返回" , :type => "button" %>
</td>
</tr>
</table>
<%end %>
在Controller上判断是否需要修改密码,如果不需要修改密码会把参数里边的两个密码删除,不然密码就为空了...
然后更新,没有任何异常的执行成功,但是没有更新成功~!
如果将
params[:user].delete("password_confirmation")
params[:user].delete("password")
替换成
params[:user][:password_confirmation] = params[:user][:old_password]
params[:user][:password] = params[:user][:old_password]
就能正常更新成功!
这是为什么?
def update
@user = User.find params[:id]
if request.post?
#如果修改密码,而且新密码为空,提示错误,否则将新密码设置和旧密码一样
if params[:change_password] and params[:user][:password].empty?
flash[:notice] = "必须输入新密码"
redirect_to :action => :update
else
params[:user].delete("password_confirmation")
params[:user].delete("password")
end
#如果旧密码为空,提示信息
if params[:user][:old_password].empty?
flash[:notice] = "必须输入旧密码"
redirect_to :action => :update
#如果旧密码相同,进行修改
elsif User.authenticate @user.name,params[:user][:old_password]
params[:user].delete("old_password")
@user.update_attributes(params[:user])
flash[:notice] = "修改成功";
redirect_to :action => :index
else
flash[:notice] = "旧密码错误"
end
end
end
相关推荐
Mongoid交易 该gem用于使用TokuMx提供的Transaction API以及mongoid。 ##请勿使用此GEM(如果您看到此行)。 工作正在进行中。 安装 将此行添加到您的应用程序的...,update_attributes!,set,update_attribute)
10. **更新记录(Updating Records)**: 可以通过`update`或`update_all`方法更新记录。`user.update(name: "Jane Doe")`将更新当前用户的姓名,而`User.update_all(name: "Admin")`会将所有用户的姓名改为"Admin"。...
> ApplicationSetting.last.update_attributes(password_authentication_enabled_for_web: true) ``` #### 二、LDAP 安装与配置 **1. 关闭防火墙和 SELINUX** 为了确保 LDAP 的正常安装和运行,需要关闭防火墙...
在这个例子中,如果`updateUser()`和`updateOrder()`任意一个操作失败,整个事务将被回滚,确保数据的一致性。 2. **XML配置声明事务**:在Spring的XML配置文件中,我们可以通过`<tx:annotation-driven>`元素开启...
Response.Write("<script>alert('删除失败');</script>"); } } else if (e.CommandName == "upd") { int id = Convert.ToInt32(e.CommandArgument); Response.Redirect("Update.aspx?id=" + id); } } ...
- PATH ATTRIBUTES:携带路由属性,包括ORIGIN、AS_PATH、NEXT_HOP、MULTI_EXIT_DISC等。 - - ORIGIN:标识路由来源,如IGP(内部网关协议)或EGP(外部网关协议)。 - - AS_PATH:记录路由经过的自治系统(AS)...
与内部网关协议(如RIP或OSPF)不同,BGP不是基于距离或速度选择路由,而是使用策略决策,通过属性(attributes)选择最佳路径。BGP的路径选择是基于一系列的属性而非单一的度量值(metric),这些属性包括:AS路径...
2. 更新描述:对每个更新进行简要描述,例如 `<update description="修复了若干bug,提高了稳定性">`。 3. 文件列表:列举需要更新或新增的文件,包括文件名、大小、MD5校验码等,如 `...
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(TOKEN_PRIVILEGES), NULL, NULL); // 请求系统关机 if (ExitWindowsEx(EWX_SHUTDOWN, 0) == 0) { ...
7.13.1. 从 1.0.x 到 1.5.0 或更新的版本的移植 7.13.2. 从 0.9.3 到 1.0.0RC1 或更新的版本的移植 7.13.3. 从 0.9.2 移植到 0.9.3 或更新的版本 7.13.4. 从 0.6.0 移植到 0.8.0 或更新的版本 7.13.5. 从 0.2.0 ...
这些功能可以通过`insert`, `update`, `delete`等函数实现。此外,还可以编写自定义函数来封装更复杂的数据库操作。 五、MATLAB数据库连接方式 MATLAB与数据库的连接除了ODBC方式外,还可以通过JDBC(Java ...
ShowMessage(ClientDataSetH.FieldByName('fCarNum').asString + '发送失败!'); ClientDataSetH.Next; end; end else begin ShowMessage(ClientDataSetH.FieldByName('fPictureName').asString + '图片未选择...
当我们尝试保存或更新模型时,可以调用`$model->save()`或`$model->update($attributes)`方法,Laravel会自动在保存之前执行验证。如果验证失败,将抛出一个`ValidationException`异常,我们可以通过异常处理器来...
在视图中,可以使用`old()`辅助函数处理验证失败后的旧数据,并结合`Model::getAttributes()`获取模型的属性值。 ```php {!! Form::model($post, ['method' => 'PUT', 'route' => ['posts.update', $post->id]]) !!...
在进行级联更新时,可能会遇到诸如关联不存在、数据验证失败等问题。因此,正确处理异常和错误是使用`nestedUpdate`时需要注意的关键点。通过使用`.catch()`或`.then(null, rejectionHandler)`来捕获并处理可能出现...
在Laravel中,数据验证通常在控制器的`store`或`update`方法内进行。通过`Validator::make`方法创建一个新的验证实例,然后传递一个包含字段名和验证规则的数组。例如: ```php use Illuminate\Support\Facades\...
9. **事务处理**:在需要确保一组操作全部成功或全部失败的情况下,可以使用DbContext的`SaveChangesAsync`方法配合`TransactionScope`进行事务处理。 10. **性能优化**:Code First允许设置查询缓存、延迟加载...
封装库可能提供了一个`updateObject:withValues:forKeys:`的接口,允许开发者通过键值对更新对象的多个属性。 5. **查(查询数据)**: Core Data的查询功能强大,它支持NSPredicate来构造复杂的查询条件。封装库...
事务是一组数据库操作,这些操作要么全部成功,要么全部失败。在Java中,事务管理有编程式和声明式两种方式。编程式事务管理需要开发者手动编写事务开始、提交和回滚的代码,而声明式事务管理则通过配置来定义事务...
其中,$id是主键值,$attributes是要修改的字段数组,$condition是更新条件,$params是传入的参数。 第二种方法是先通过findByPk()函数获取模型对象,然后修改模型的属性值,最后调用update()函数保存修改。示例...