2010-07-09 1 views
7

Ich habe eine Problemmethode in meinem Berichtsmodell definiert. Ich muss den Wert von Report.problem im Controller des Berichts verwenden, während ich die Aktionsshow definiere. Aber ich bekomme immer die Fehlermeldung 'undefined method problem'. Wie löse ich das? Jede Hilfe wäre großartig.Methode im Modell definieren, auf die im Controller zugegriffen werden kann

Ich habe ein Berichtsmodell und ein Problemmodell, das eine Liste aller Probleme enthält.

Im Berichtsmodell

def problems1 
Problem.find(:all, :conditions =>) 
end 

in den Berichten Controller brauche ich so etwas wie

def show 
    @report = Report.problems1 
end 
+0

Können Sie einige Code hinzufügen, was fehlschlägt? Sowohl der Modellcode für die Methode, die Sie aufrufen möchten, als auch der Controllercode, der den Fehler generiert. –

Antwort

26

Sie haben self.method_name zuweisen als Klassenmethode

Folgen Sie folgende Regel für Modell Methoden

def self.problem 

end 

in Controller

Klasse Methode zu verwenden,

Report.problem 

Instanz Methode

def problem 

end 

in Controller

report = Report.new 
report.problem 
+0

Danke, ich behalte es im Hinterkopf – Prateek

0

Wenn Sie Methode als Klassenmethode definieren

class Report < ActiveRecord :: Base 
def Report.problem 
    puts 1 
end 
end 

Report.problem 
>1 

Aber wenn Sie definieren Methode als Objekt

class Report < ActiveRecord :: Base 
def problem 
    puts 1 
end 
end 

Dieser Methodenaufruf

report = Report.new 
report.problem 
>1 
+0

Danke das hilft. Ich kann das in der Steuerung verwenden, oder? – Prateek

Verwandte Themen