Domanda

Sto avendo un problema nella mia Ruby on Rails app con un modello in cui un rapporto belongs_to continua finendo con l'essere pari a zero.

Dati i seguenti modelli:

 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

Ora, mi aspetto a mio avviso indice telaio vorrei vedere sia il modello ei dati forniti chassis_size:

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

ma ottengo un errore che il chassis_size.size è pari a zero:

 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    

Guardando i dati nel database, tutto sembra essere corretto.

Non so il motivo per cui il modello funziona, ma chassis_size non lo fa. Che cosa mi manca? Perché i dati chassis_size non appare a carico?

È stato utile?

Soluzione

La dimensione è una colonna della tabella chassis_sizes?

Se è così, questo è una parola riservata in rubino, in quanto è il metodo per restituire la lunghezza di un array.

fa ogni chassis ha un chassis_size? Prova questo:

<% @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 %>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top