2016-04-11 12 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.

İlgili konular