大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – 仅当属性更改时才更新用户属性,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
1)用户填写表单(新动作)并点击提交(创建动作)
2)用户被重定向到他们的编辑页面(编辑操作使用由模型创建的edit_id,而不是Rails auto-gen id),这显示了用户已经提交的信息
3)用户可以选择更改信息(更新动作)并重新提交
在此版本中,即使用户在编辑页面中不进行任何更改并提交,页面仍将闪烁成功警报.
从数据库的角度来看,我并不在意,因为表单预先填写了用户的信息,所以update_attributes方法只是覆盖相同信息的旧信息.
从用户的角度来看,这是令人讨厌的,所以我想确保信息只是更新,只有当用户实际更改某些东西时才会闪烁成功警报.
def update @request = request.find_by_edit_id(params[:edit_id]) if @request.update_attributes(request_params) flash[:success] = true redirect_to edit_request_path(@request.edit_id) else render 'edit' end end
并添加一个额外的组件到“if”像这样:
def update @request = request.find_by_edit_id(params[:edit_id]) if @request.update_attributes(request_params) && @request.changed? flash[:success] = true redirect_to edit_request_path(@request.edit_id) else render 'edit' end end
但这不行.现在发生的是,在编辑页面上,如果我没有更改任何信息并点击提交,没有任何事情发生(这是非常好的),但是如果我更改信息并点击提交,仍然没有发生什么(这是坏的).我究竟做错了什么?
注意:我最初以为这是一个操作错误的顺序,所以我把它做成一个嵌套的,如果是,如果@ request.update_attributes,第二个if @ request.changed,但是这样也不行
def update @request = request.find_by_edit_id(params[:edit_id]) @request.assign_attributes(request_params) if @request.changed? if @request.save flash[:success] = true redirect_to edit_request_path(@request.edit_id) else render 'edit' end else # Action if no change has been made end end
以上是大佬教程为你收集整理的ruby-on-rails – 仅当属性更改时才更新用户属性全部内容,希望文章能够帮你解决ruby-on-rails – 仅当属性更改时才更新用户属性所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。