繁体   English   中英

Rails 5关联表数据

[英]Rails 5 associated table data

在控制台内部,我可以通过执行以下操作来访问相关表。

@eec = ExpenseExpenseCategory.last

puts @eec.expense.payee.first_name
-> Charles

但是在模板内部,如果我有某种程度的

<% @expense_expense_categories.each do |eec| %>
  <tr>
    <td><%= eec.amount %></td>
    <td><%= eec.expense.payee.first_name %></td>
  <\tr>

<% end %>

在我的报告控制器中设置的

def expense_expense_category_report

  @expense_expense_categories = ExpenseExpenseCategory.all
    respond_to do |format|
      format.html {}
      format.js {}
    end
end

我收到此错误:ActionView :: Template :: Error(nil:NilClass的未定义方法“ payee”):

但是,如果我打电话给诸如

<td><%= eec.expense %></td>

我得到一个关系Expense:0x007f9c8ad91b28>,但是尝试访问它的属性时遇到相同的错误

<td><%= eec.expense.date %></td>

我收到错误ActionView :: Template :: Error(nil:NilClass的未定义方法`date'):

如何确定可以像在控制台中那样访问方法?

您的一个或多个类别可能没有与之相关的费用。 如果我已输入数据,然后将关联添加到模型,则有时会发生这种情况。

这意味着它是nil,并且您正在nil对象上调用日期,这会导致您的错误。

您可以通过运行以下测试代码在控制台中进行检查

ExpenseExpenseCategory.all.each do |eec|
  if eec.expense.nil?
    puts "Expense category #{eec.id} has no expense"
  end
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM