【资源聚合平台】5/1 管理员账户资料修改功能实现

今天上线发现master更新了模板,就拿来用了一下,重新修改了之前侧边栏的class和id来适配新的模板,并且在每个平台后台的子页面中都填上了侧边栏的渲染,效果还不错:


之前的丑陋界面成功变成了这个样子,再改改提示文字,字体样式什么也用上模板中的按钮和label就完美了。

主要工作是做好了修改账户的功能。

读了一下user部分的代码,学会了params之类的使用方法,因为admin也是个user,所以直接采用了user_param来辅助管理员信息的更新。

更新界面在修缮好的模板中直接插入了一个form:


大概就是这样。其中,用户采用了session_helper中的current_user方法拿到,(另外验证需要将来写一下必须是admin类型),表单中大部分可见属性都使用了当前用户的值作为默认值,这样同时可以一定程度上代替展示页面(虽然管理员可能不怎么需要),不过有关密码的三个输入框需要用户来填入。这里采用了一些验证机制,利用了.authenticate方法来验证身份才可以进行更新,同时可以不输入新密码,这样就不会修改密码,如果输入了新密码则要确认一遍才可以更新。逻辑实现如下:

   def update
        @admin = User.find(params[:user][:id])

        confirm_id = @admin.authenticate(params[:user][:password_old])
        same_new_password = true

        if !params[:user][:password_new].nil? && !params[:user][:password_confirmed].nil? && params[:user][:password_new] != params[:user][:password_cofirmed]
            same_new_password = false
        end
        respond_to do |format|
            if confirm_id == false

                format.html { redirect_to admin_edit_path(@admin), notice: "认证失败" }

            elsif same_new_password == false
                format.html { redirect_to admin_edit_path(@admin), notice: "新密码不一致" }

            else
                up = user_param
                up[:password] = params[:user][:password_old]
                if @admin.update_attributes(up)
                #   flash[:success] = "success to update user information!"
                #   redirect_to 'admins/own_space'
                  format.html { redirect_to admin_edit_path(@admin), notice: "#{@admin.username}\'s information was successfully updated." }

                else
                  format.html { redirect_to admin_edit_path(@admin), notice: "资料格式错误" }

                end
            end
        end
    end

修改之后跳转回本页面并刷新提示信息,不成功会报各种错误。效果如下:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章