Question

Je vais avoir un problème dans mon application Ruby on Rails avec un modèle dans lequel une relation de belongs_to continue de se retrouver étant nulle.

Compte tenu des modèles suivants:

 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

Maintenant, je me attends dans mon index des châssis que je voyais à la fois le modèle et les données de chassis_size données:

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

Mais je reçois une erreur que le chassis_size.size est nulle:

 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    

En regardant les données dans la base de données, tout semble correct.

Je ne sais pas pourquoi modèle fonctionne, mais chassis_size ne fonctionne pas. Qu'est-ce que je rate? Pourquoi ne pas les données de chassis_size semblent charger?

Était-ce utile?

La solution

est la taille d'une colonne dans votre table chassis_sizes?

Si oui, c'est un mot réservé en rubis, car il est la méthode pour le retour de la longueur d'un tableau.

Est-ce que tous les châssis ont une chassis_size? Essayez ceci:

<% @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 %>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top