Rails - 无法在部分中呈现相关的模型属性

时间:2017-06-21 00:06:34

标签: ruby-on-rails partials

这是我的模特:

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;

有任何线索吗?

1 个答案:

答案 0 :(得分:1)

检查数据库后,我在train_lines表的末尾发现了一个空行。它导致外键train_id上的查找返回null。在null上调用id会停止渲染并导致页面无法加载。