I Methode in ApplicationWie Methoden in Application in Modellen definiert nennen
class ApplicationController < ActionController::Base
helper_method :get_active_gateway
def get_active_gateway(cart)
cart.account.gateways
end
end
definiert haben, wenn ich diese Methode nenne in Modell
class Order < ActiveRecord::Base
def transfer
active= get_active_gateway(self.cart)
end
end
Es wirft Fehler undefined local variable get_active_gateway
. So
Ich schrieb
class Order < ActiveRecord::Base
def transfer
active= ApplicationContoller.helpers.get_active_gateway(self.cart)
end
end
Dann wurde sie werfen error undefined method nil for Nilclass
.
Ich arbeite in Rails 3.2.0.
Wie die beiden Antworten sagten, sollten Sie keine Controller-Methoden von Ihren Modellen aufrufen. Es wird nicht empfohlen. In den Model View Controller (MVC) einlesen. Um die Dinge unabhängig zu halten. Grundsätzlich spricht Model mit dem Speicher, der Controller spricht mit dem Modell (und nicht umgekehrt) und spricht mit dem Controller. –
Aufgrund des Rails-Designs und des Beseitigens der Möglichkeit, ApplicationController.helpers (jetzt) aufzurufen, müssen Sie sich im Modell mit einem Dup-Code-def wiederholen. Stelle sicher, dass du an beiden Stellen einen Kommentar hinzufügst. Wenn du es an einer Stelle änderst, erinnerst du dich daran, es in der anderen zu ändern. – JosephK