manager 修改密码

与普通的crud一样,增加 route controller view即可

在书写controller的 时候注意需要什么逻辑,可以进行注释,然后在书写 ,注意语法,参数的变动,URL的跳转。注意这里的编辑,不要根据id进行,因为根据id的话,别人也可以修改自己的,只能根据正确的用户进行判断。

class ManagerPasswordsController < ApplicationController
  before_action :authenticate_manager!
  before_action :save_log

  def edit_password
    @manager = @current_manager
  end 

  def update_password
    @manager = Manager.find params[:id]
    #判断密码是否正确,是否有修改权限,密码正确,可以进行修改
    #if params[:old_password] == @manager.password
    if @manager.valid_password?(params[:old_password])
      #valid_password?('password123')
      #判断新密码是否输入一致,输入一致,保存新密码
      if params[:new_password] == params[:repeat_new_password]
        @manager.password = params[:new_password]
        @manager.save!

        redirect_to '/', notice: '操作成功'
      else
        redirect_to edit_password_manager_passwords_path, notice: '密码输入不一致'
      end 
    else
      redirect_to edit_password_manager_passwords_path, notice: '密码错误'
    end 
  end 
end
~    

在routes文件增加路由,需要的仅仅是编辑和更新页面,因为密码页面不需要显示,密码都是在数据库加密显示的,显示也不起作用。

resources :manager_passwords do
 11     collection do
 12       get :edit_password
 13       post :update_password
 14     end 
 15   end

视图页面就是普通的页面,注意是post不是put,还有就是form表单的首行,地址要写好。

<h3>修改密码</h3>
<%= form_tag update_password_manager_passwords_path(id: @manager.id), method: 'post' do %>
  <p>原密码:<%= password_field_tag :old_password, '', class: 'form-control', style: 'display: inline; width: 200px' %></p>
  <p>新密码:<%= password_field_tag :new_password, '', class: 'form-control', style: 'display: inline; width: 200px' %></p>
  <p>确认新密码:<%= password_field_tag :repeat_new_password, '', class: 'form-control', style: 'display: inline; width: 200px' %></p>
  <%= submit_tag "确认修改", class: 'btn btn-primary' %>
<% end %>
<ul class="nav navbar-nav px-3" style='float:right'>
        <li class="nav-item text-nowrap">
          <%= link_to "修改密码", "/manager_passwords/edit_password", class: 'nav-link' %>
        </li>
      </ul>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值