2016-05-14 7 views
0

Arbeiten an einer App in Schienen 4, Rechnungen und Clients als Modelle - Ich habe bereits die Verbindungen zwischen ihnen, wie Sie in den Schnipsel unten aus beiden Modellen sehen können, aber nicht erreichen, wie zum Beispiel zu erreichen den Client.name in einer Rechnungsansicht anzeigen.Wie kann man Parameter von einem anderen Modell innerhalb der/Show eines anderen Modells anzeigen?

Durch Rails-Konsole, wenn ich ‚Invoice.last.client.name‘ zu tun - ich kann den Client-Namen - aber wenn ich versuche, mit diesem Stück Code in der Ansicht, dass die gleiche Sache zeigen:

<% @invoices.each do |invoice| %> 
    <%= invoice.client.name %> 
    <% end %> 

ich diesen Fehler nicht definierte Methode `Name‘ für nil: NilClass

Invoice.rb (Modell)

class Invoice < ActiveRecord::Base 
    belongs_to :client 
    acts_as_schedulable :schedule 

    # accepts_nested_attributes_for :clients 

end 

Client.rb (Modell)

Ich habe versucht, etwas mit geschachtelten Attributen zu tun und die "Name" -Methode im Rechnungs-Controller hinzuzufügen, aber ich weiß nicht, was ich falsch mache. Weitere Referenz habe ich die ganze Rechnung Controller in this pastebin link.

def name 
    @invoice = Invoice.client.name 
    end 

Antwort

0

enthalten Es könnte sein, dass Sie eine Rechnung sofort ohne Client. Ich würde damit beginnen, in der Konsole zu bestätigen, dass alle Rechnungen einen Client haben, z.

Invoice.all.reject{|invoice| invoice.client}.count 

Wenn die Antwort nicht Null ist, ist das Ihr Problem.

Auch die von Ihnen gepostete Name Methode ist falsch und würde einen Fehler verursachen. Sie rufen eine Klassenmethode "client" in der Invoice-Klasse auf.