Frage

Ich bin auf Rails-Anwendung mit einem Modell ein Problem in meinem Rubin mit dem eine belongs_to Beziehung zu Null enden hält.

In Anbetracht der folgenden Modelle:

 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

Nun würde ich in meinem Chassis Indexansicht erwarte ich, dass das Modell sowohl sehen würde und die chassis_size Daten gegeben:

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

Aber ich erhalte eine Fehlermeldung, dass der chassis_size.size ist gleich Null:

 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    

Mit Blick auf den Daten in der Datenbank, wird alles korrekt sein.

Ich bin nicht sicher, warum Modell funktioniert aber chassis_size nicht. Was vermisse ich? Warum nicht die chassis_size Daten erscheinen Last?

War es hilfreich?

Lösung

Ist Größe eine Spalte in der Tabelle chassis_sizes?

Wenn ja, ist dies ein reserviertes Wort in Rubin, wie es das Verfahren zur Rückführung der Länge eines Arrays ist.

Hat jeder Chassis ein chassis_size? Versuchen Sie folgendes:

<% @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 %>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top