更新前筛选参数出错,无法编辑



我正在尝试在更新前编辑参数,所以如果没有键入密码,就不需要

这是我的控制器

def update
    @professional = Professional.find(params[:id])
    request.params[:professional].delete("password") if params[:professional][:password].blank?
    request.params[:professional].delete("password_confirmation") if params[:professional][:password_confirmation].blank?
    puts params
    if @professional.update_attributes(params[:professional])
        redirect_to professionals_path
    else
        render action: "edit"
    end
end

这是我的服务器反应

我将其设置为删除密码密钥后打印参数

"{"utf8"=>"✓", "_method"=>"put",
"authenticity_token"=>"AdJya2kGwbuQZ/VYRGnvBRJvWAw40B766gfObQidmdY=", 
"professional"=>{"name"=>"Prometheus Deimos Dardanos", 
"role"=>"Admin", 
"email"=>"prometheus@mail.com"}, 
"commit"=>"Salvar", "action"=>"update", 
"controller"=>"professionals", "locale"=>"pt-BR", "id"=>"1"}

然后,请求以POST形式失效,并以PUT形式重定向,密码密钥返回params。

cache: [POST /profissionais/1] invalidate, pass
Started PUT "/profissionais/1" for 127.0.0.1 at 2013-11-25 11:27:16 -0300
Processing by ProfessionalsController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"AdJya2kGwbuQZ/VYRGnvBRJvWAw40B766gfObQidmdY=", "professional"=>{"name"=>"Prometheus Deimos Dardanos", "role"=>"Admin", "email"=>"prometheus@mail.com", 
             "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Salvar", "locale"=>"pt-BR", "id"=>"1"}
Professional Load (0.4ms)  SELECT "professionals".* FROM "professionals" WHERE "professionals"."id" = 1 LIMIT 1
Professional Load (0.1ms)  SELECT "professionals".* FROM "professionals" WHERE "professionals"."id" = ? LIMIT 1  [["id", "1"]]
(0.1ms)  begin transaction
(0.1ms)  rollback transaction"

正如你可能看到的,当我打印参数时,它没有密钥密码。

尝试将控制器更改为:

def update
  @professional = Professional.find(params[:id])
  request.params[:professional].delete("password") if params[:professional][:password].blank?
  request.params[:professional].delete("password_confirmation") if params[:professional]      [:password_confirmation].blank?
  puts params
  if @professional.update_attributes(params[:professional])
    redirect_to professionals_path
  else
    puts @professional.errors
    render action: "edit"
  end
end

这样您就可以理解为什么它没有正确更新资源。

最新更新