2015-08-06 3 views
1

Мне нужно настроить старый проект рельсов.Rails database undefined nil

Он генерирует файл excel из базы данных.

Контакт может быть связан с компанией или нет. Если это связано с компанией, а компания defaultddress установлена ​​в компании, на листе excel печатается контактная информация компании.

Что мне нужно сделать, так это то, что в этом случае мне нужно экспортировать как личную контактную информацию, так и информацию о компании на лист excel.

Я нашел файл, в котором генерация первенствует происходит, и просто хотел написать что-то вроде этого:

<% @defaultaddress_id = Contact.find(qc.contact.id).defaultaddress_id %> 
<% @address = Address.find(@defaultaddress_id) unless @defaultaddress.empty? %> 
<%= @address %> 

(. Я тестировал только печать defaultaddress_id, и это просто отлично)

Но Я нахожу это в журналах;

ActionView::TemplateError (undefined method `empty?' for nil:NilClass) on line #87 of app/views/query/_report.html.erb: 

Так что я пробовал со следующим;

<% @address = Address.find(@defaultaddress_id) unless @defaultaddress_id == 0 %> 

Но теперь ВОФК

ActionView::TemplateError (Couldn't find Address without an ID) on line #87 of app/views/query/_report.html.erb: 

Разве это не то, что я пишу? Не выполняйте этот метод, если в поле FK нет чего-то?

Defaultaddress_id - это FK таблицы адресов.

+1

Это не ответ на вопрос, но у вас, видимо, уже есть объект 'contact', поэтому нет необходимости делать' Contact.find (...) '. Вы можете просто: '@defaultaddress_id = qc.contact.defaultaddress_id' – Mischa

ответ

1

Я считаю @defaultaddress должен быть @defaultaddress_id

А также использовать .blank? вместо .empty? в случае ноль значений.

<% @address = Address.find(@defaultaddress_id) unless @defaultaddress_id.blank? %> 


nil.empty? 
    #=> NoMethodError: undefined method `empty?' for nil:NilClass 

nil.blank? 
    #=> true 
Смежные вопросы