1

我在我的 Ruby on Rails 应用程序中遇到了一个问题,其模型中的 belongs_to 关系一直为 nil。

给定以下模型:

 class Chassis < ActiveRecord::Base
   belongs_to :model
   belongs_to :chassis_size
 end

 class Model < ActiveRecord::Base
    has_many :chassis
 end

 class ChassisSize < ActiveRecord::Base
    has_many :chassis
 end

现在,我希望在我的底盘索引视图中我会看到模型和底盘尺寸数据:

 <% @chassis.each do |chassis| %>
    <%= chassis.id %><br />
    <%= chassis.model.name %><br />
    <%= chassis.chassis_size.size %><br />
 <% end %>

但是我收到一个错误,即 chassis_size.size 为零:

 You have a nil object when you didn't expect it!
 You might have expected an instance of Array.
 The error occurred while evaluating nil.size    

查看数据库中的数据,一切似乎都是正确的。

我不确定为什么模型可以工作,但机箱尺寸却不行。我错过了什么?为什么机箱大小数据似乎没有加载?

4

1 回答 1

0

大小是您的机箱大小表中的一列吗?

如果是这样,这是 ruby​​ 中的保留字,因为它是返回数组长度的方法。

每个机箱都有一个机箱尺寸吗?试试这个:

<% @chassis.each do |chassis| %>
    <%= chassis.id %><br />
    <%= chassis.model.name %><br />
    <% if chassis.chassis_size %>
        <%= chassis.chassis_size.description %>
    <% else %>
        No chassis_size exists for this chassis
    <% end %><br />
 <% end %>
于 2010-03-03T21:10:17.707 回答