簡體   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