Rails数据库undefined nil

时间:2015-08-06 10:36:32

标签: ruby-on-rails activerecord

我需要调整旧的rails项目。

它从数据库生成一个excel文件。

联系人可以与公司联系或不联系。 如果它链接到公司并且在公司上设置了defaultaddress,那么excel表只会打印公司的联系信息。

我需要做的是,在这种情况下,我需要将私人联系信息和公司信息导出到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 %>

但现在它是sais

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

这不正是我写的吗?除非FK字段中有什么内容,否则不要使用该方法?

defaultaddress_id是Adress表的FK。

1 个答案:

答案 0 :(得分:1)

我相信@defaultaddress应为@defaultaddress_id

如果 nil 值,也会使用.blank?代替.empty?

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


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

nil.blank?
  #=> true