今天上线发现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
修改之后跳转回本页面并刷新提示信息,不成功会报各种错误。效果如下: