سؤال

أواجه مشكلة في تطبيق 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 %>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top