2016-04-11 2 views
1

Bir Json REST-Api sağlamak için bir Rails uygulamasına sahibim.Nasıl yapılır: "error": "undefined method" [] 'nil için: NilClass "

benim denetleyicileri birinde
rescue_from ActiveRecord::RecordNotFound,  with: :_404 
rescue_from ActiveRecord::RecordInvalid, with: :_400 
rescue_from ActiveRecord::RecordNotUnique, with: :_406 
.... 
def _404(exception) 
     Rails.logger.error "head 404 with params #{params}" 
     render status: 404, :json => {:error => exception.message} 
end 

, ben farklı kayıtlar için db birden çok kez sorgulamak nerede olduğu gibi bir ifade vardır: Benim ApplicationController, ben çeşitli hataları yakalamak için bu satırları var. Belirli eylem isabet kontrolöre arama yaptığınızda

@account = Account.find_by_phone(params[:phone]) 
@controller = Controller.find_by_controller_id(params[:role_id]) 
@batlockers_rel = Batlocker.includes(:customer).where("customer_id is not null") 

, ben başlık ve tepki gövdesini herhangi bir veritabanı nesneleri ile bağlantılı değildir istenen parametreler için

HTTP/1.1 501 NOT IMPLEMENTED 
{"error":"undefined method `[]' for nil:NilClass"} 

olsun. Bu NilErrors'u nasıl yakalarım ve daha sonra bulunamadığı kaydı nasıl ekleyebilirim?

cevap

0

Muhtemelen NameError sınıfını yakalayabilir veya daha genel StandardError:

rescue_from ::NameError, with: :_whatever 
rescue_from StandardError, with: :_whatever 

Ama hataların bu türleri of-cource ilk kez yakalamak gerekir, kendinizi ele almak gerek ancak bu hatayı çözmelidir sayfanı Uygulama bu tür hataları atmak değil, veri erişim öğeleri önce orada olup olmadığını kontrol edin.