首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 5关联表数据

Rails 5关联表数据
EN

Stack Overflow用户
提问于 2018-01-23 02:22:33
回答 1查看 23关注 0票数 0

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

代码语言:javascript
复制
@eec = ExpenseExpenseCategory.last

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

但是在一个模板中,如果我有一些东西

代码语言:javascript
复制
<% @expense_expense_categories.each do |eec| %>
  <tr>
    <td><%= eec.amount %></td>
    <td><%= eec.expense.payee.first_name %></td>
  <\tr>

<% end %>

是在我的报表控制器中设置的

代码语言:javascript
复制
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’):

但是,如果我将费用称为

代码语言:javascript
复制
<td><%= eec.expense %></td>

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

代码语言:javascript
复制
<td><%= eec.expense.date %></td>

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

如何确保可以像在控制台中一样访问这些方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-23 02:53:34

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

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

您可以通过运行一些测试代码在控制台中进行检查,如下所示

代码语言:javascript
复制
ExpenseExpenseCategory.all.each do |eec|
  if eec.expense.nil?
    puts "Expense category #{eec.id} has no expense"
  end
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48387946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档