2015-06-04 2 views
0
<% 
@loans.each do |loan_rec| 
    loan=loan_rec.info 
    if loan['_LoanName'].blank? 
    loan_name = 'No Loan Title' 
    else 
    loan_name = loan['_LoanName'] 
    end 
end 
%> 

Я получаю ошибку undefined method `[]' for nil:NilClass. Что не определено? и когда я печатаю loan массив в цикле, это дает следующий результат:"undefined method` [] 'for nil: NilClass "

{ 
    "_LendingCategory"=>"Private Real Estate Loan", 
    "Email"=>"[email protected]", 
    "FirstName"=>"TestDavid", 
    "Id"=>3573, 
    "_LoanName"=>"null", 
    "LastName"=>"TestGeorge", 
    "_DesiredTermLength"=>"3", 
    "_TransactionType0"=>"Purchase", 
    "_CashContribution"=>100000.0, 
    "_NetLoanAmountRequested0"=>8000000.0 
} 
+1

Какова ценность load_rec.info? –

+0

Когда мы печатаем «loan_rec.info» Это дает: {«_LendingCategory» => «Частный кредит на недвижимость», «Email» => «[email protected]», «FirstName» => «TestDavid», «Id» => 3573, «_LoanName» => «null», «LastName» => «TestGeorge», «_DesiredTermLength» => «3», «_TransactionType0» => «Покупка», «_CashContribution» => 100000.0, «_NetLoanAmountRequested0» => 8000000.0} – Pritika

+0

на какой строке это даёт ошибку? –

ответ

3

У вас есть по крайней мере один Loan, для которого loan_rec.info является nil. Вы можете попробовать:

loan = loan_rec.info || Loan.new 

как быстро исправить, но вы также должны фигурировать выяснить, как избежать nil в первую очередь.

+0

лучше: кредит = loan_rec.try (: info) || Loan.new – Exsemt

1

В вашем loan, нет ни одного info ключа. Таким образом, вы имели бы значение aleast info.

1

Вы должны ожидать, что не должно быть info на каждые loan_rec. Я бы реорганизовал ваш код следующим образом:

<% 
    @loans.each do |loan_rec| 
    loan = loan_rec.info 
    loan_name = loan && loan['_LoanName'] 
    if loan_name.blank? 
     loan_name = 'No Loan Title' 
    end 
    end 
%> 
Смежные вопросы