अद्यतन त्रुटि से पहले फ़िल्टर पैरा, संपादित नहीं कर सकते हैं

मैं अपडेट से पहले पैरा संपादित करने की कोशिश कर रहा हूं, इसलिए यदि पासवर्ड टाइप नहीं किया गया है तो इसकी आवश्यकता नहीं होगी

यहाँ मेरा नियंत्रक है

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"=>"[email protected]"}, 
"commit"=>"Salvar", "action"=>"update", 
"controller"=>"professionals", "locale"=>"pt-BR", "id"=>"1"}

फिर अनुरोध POST के रूप में अमान्य हो जाता है और PUT के रूप में रीडायरेक्ट हो जाता है और पासवर्ड कुंजी पैराम में वापस आती है।

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"=>"[email protected]", 
             "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"

जैसा कि आप देख सकते हैं, जब मैं पैराम प्रिंट करता हूं तो इसमें कुंजी पासवर्ड नहीं होता है।

0
मेरी कोड सफलता पासवर्ड कुंजी प्रो पैरा को हटाती है, लेकिन जैसा कि आप देख सकते हैं ... लेकिन यह "जादुई रूप से" PUT मांग पर वापस दिखाई देता है। यह एक और पैरा संपादित कर रहा है Iam
जोड़ा लेखक Adelino Segundo, स्रोत
params [: professional] .delete ("password") के साथ प्रयास करें यदि पैरा [: पेशेवर] ["पासवर्ड"]। खाली? या इसके विपरीत: params [: professional] .delete ( : पासवर्ड) अगर पैराम्स [: पेशेवर] [: पासवर्ड] .blank? - सुनिश्चित नहीं है कि पैरा को हैशविथ इंडिफरफर एक्सेस के रूप में माना जाता है
जोड़ा लेखक MrYoshiji, स्रोत

1 उत्तर

अपने नियंत्रक को बदलने का प्रयास करें:

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

ताकि आप समझ सकें कि यह संसाधन को सही तरीके से अपडेट क्यों नहीं कर रहा है।

0
जोड़ा
मैंने आपको कमांड जोड़ा, और मुझे पासवर्ड आवश्यक त्रुटि मिलती है, शायद इसलिए कि पासवर्ड कुंजी पैराम में वापस दिखाई देती है
जोड़ा लेखक Adelino Segundo, स्रोत