10

मैं थोड़ी देर के लिए खोज कर रहा हूं और फिर भी मुझे अभी तक एक संतोषजनक उत्तर नहीं मिल रहा है। मेरे पास दो ऐप हैं FrontApp और BackApp। FrontApp में एक सक्रिय संसाधन है जो बैकएप में एक मॉडल की नकल करता है। सभी मॉडल स्तर सत्यापन बैकएप में रहते हैं और मुझे FrontApp में उन बैकएप सत्यापनों को संभालने की आवश्यकता है।सक्रिय संसाधन त्रुटि हैंडलिंग

मैं निम्नलिखित है सक्रिय-संसाधन कोड:

class RemoteUser < ActiveResource::Base 
    self.site = SITE 
    self.format = :json 
    self.element_name = "user" 
end 

यह की नकल करता है एक मॉडल है जो के रूप में

class User < ActiveRecord::Base 

    attr_accessor :username, :password 

    validates_presence_of :username 
    validates_presence_of :password 
end 

जब भी मैं सामने अनुप्रयोग में एक नया RemoteUser बनाने का अनुसरण करता है, मैं फोन करता हूँ। इसे बचाओ। उदाहरण के लिए:

user = RemoteSession.new(:username => "user", :password => "") 
user.save 

हालांकि, बाद से पासवर्ड खाली है, मैं BackApp से FrontApp करने के लिए त्रुटियों वापस पारित करने के लिए की जरूरत है। यह नहीं हो रहा है। मैं समझ में नहीं आता कि सफलतापूर्वक कैसे किया जाए। यह एक आम एकीकरण परिदृश्य होना चाहिए; लेकिन इसके लिए एक अच्छा प्रलेखन प्रतीत नहीं होता है?

मेरे शोकहारा नियंत्रक है कि एक प्रॉक्सी के रूप में कार्य करता है इस प्रकार है:

class UsersController < ActionController::Base 
    def create 
    respond_to do |format| 
     format.json do 
     user = User.new(:username => params[:username], :password => params[:password]) 
     if user.save 
      render :json => user 
     else 
      render :json => user.errors, :status => :unprocessable_entity 
     end 
     end 
    end 
    end 
end 

यह क्या है कि मुझे याद आ रही है? किसी भी प्रकार के मदद की बहुत सराहना की जाएगी।

चीयर्स

उत्तर

13

रेल स्रोत कोड से मैं पता लगा कि कारण ActiveResource त्रुटियों नहीं मिला था, क्योंकि मैं json में "त्रुटियों" टैग में मौजूद त्रुटियों बताए नहीं किया गया। यह अनियंत्रित है लेकिन आवश्यक है। :)

तो मेरी कोड किया जाना चाहिए था:

render :json => {:errors => user.errors}, :status => :unprocessable_entity 
+0

'format.json {रेंडर: जेसन => {: त्रुटियों => @ ग्राहक.एरर्स},: स्थिति =>: unprocessable_entity}' ----> यह काम करेगा ..... मुझे भी यही समस्या थी क्योंकि मैं @ ग्राहक.एरर्स जैसे कोड का उपयोग कर रहा था।full_messages, यह सक्रिय संसाधन applicaion असाइन और वापस नहीं कर रहा है –

1

कोड में:

class UsersController < ActionController::Base 
    def create 
    respond_to do |format| 
     format.json do 
     user = User.new(:username => params[:username], :password => params[:password]) 
     if user.save 
      render :json => user 
     else 
      render :json => user.errors, :status => :unprocessable_entity 
     end 
     end 
    end 
    end 
end 

कोशिश

user = User.new(:username => params[:username], :password => params[:password]) 

को बदलने के लिए

user = User.new(params[:user]) 

आपके सक्रिय-संसाधन मॉडल के साथ ऊपर हैश की तरह पैरामीटर पारित :

:user => { :username => "xpto", :password => "yst" } 
+0

टिप के लिए धन्यवाद, लेकिन क्या मैं जिस समस्या का सामना कर रहा हूं उसे हल करने के लिए वैसे भी योगदान दूंगा? – Priyank

+0

वह कोड आपके कोड में एकमात्र त्रुटि है। मैंने सोचा कि शायद वह गलती मॉडल को त्रुटियों को पूरा नहीं कर रही थी। अगर इससे मदद नहीं मिलती है, तो मुझे खेद है, लेकिन मुझे नहीं पता कि और क्या प्रयास करना है। – robertokl

1

यह समाधान मेरे लिए काम किया: https://stackoverflow.com/a/10051362/311744

अद्यतन कार्रवाई:

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

    respond_to do |format| 
     if @user.update_attributes(params[:user]) 
     format.html { redirect_to @user, notice: 'User was successfully updated.' } 
     format.json { head :no_content } 
     else 
     format.html { render action: 'edit' } 
     format.json { 

      render json: @user.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

कॉलिंग नियंत्रक:

@remote_user = RemoteUser.find(params[:id]) 
if (@remote_user.update_attributes(params[:remote_user])) 
    redirect_to([:admin, @remote_user], notice: 'Remote user was successfully updated.') 
else 
    flash[:error] = @remote_user.errors.full_messages 
    render action: 'edit' 
end 
संबंधित मुद्दे