这是我的模特:
class Train < ApplicationRecord
has_many :train_lines
end
class TrainLine < ApplicationRecord
belongs_to :train
end
我的控制器:
# controllers/train_lines_controller.rb
class TrainLinesController < ApplicationController
def index
@train_lines = TrainLine.all
end
end
这是我的观点:
# views/train_lines/index.html
<%= render @train_lines %>
# views/train_lines/_train_line.html.erb
<p><%= train_line.train.id %></p>
我得到undefined method
id&#39;为nil:NilClass`错误
如果我运行Rails控制台,我可以成功呼叫:
$ tl = TrainLine.first
$ tl.train.id
$ 6028
它似乎呈现出一些东西,并且由于某种原因它会破裂。我在日志中得到以下内容:
渲染了train_lines / _train_line.html.erb的集合[6197次] (5875.4ms)在其中呈现train_lines / index.html.erb 布局/应用程序(5992.4ms)已完成500内部服务器错误 6008ms(ActiveRecord:1165.4ms)
ActionView :: Template :: Error(未定义的方法`id&#39;对于nil:NilClass): 1:
&lt;%= train_line.train.id%&gt;
有任何线索吗?
答案 0 :(得分:1)
检查数据库后,我在train_lines
表的末尾发现了一个空行。它导致外键train_id
上的查找返回null。在null上调用id
会停止渲染并导致页面无法加载。