لماذا أحصل على شيء من أجل العلاقة في القضبان؟
-
24-09-2019 - |
سؤال
أواجه مشكلة في تطبيق Ruby on Rails الخاص بي مع طراز حيث تنتمي العلاقة بين العلاقة التي تنتهي بها الأمر.
بالنظر إلى النماذج التالية:
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_size المقدمة:
<% @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
بالنظر إلى البيانات الموجودة في قاعدة البيانات ، يبدو أن كل شيء صحيح.
لست متأكدًا من سبب عمل النموذج ولكن chassis_size لا. ماذا ينقصني؟ لماذا لا يبدو أن بيانات Chassis_Size يتم تحميلها؟
المحلول
هل الحجم عمود في جدول الهيكل الخاص بك؟
إذا كان الأمر كذلك ، فهذه كلمة محجوزة في روبي ، لأنها طريقة لإعادة طول الصفيف.
هل كل الهيكل له هيكل؟ جرب هذا:
<% @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 %>
لا تنتمي إلى StackOverflow