Appeler une méthode de modèle dans un Contrôleur
Je suis un peu de mal ici, je suis incapable de réussir un appel à une méthode qui appartient à une ProjectPage
modèle dans le ProjectPage
contrôleur.
J'ai dans mon ProjectPage
contrôleur:
def index
@searches = Project.published.financed
@project_pages = form_search(params)
end
Et dans mon ProjectPage
modèle:
def form_search(searches)
searches = searches.where('amount > ?', params[:price_min]) if check_params(params[:price_min])
@project_pages = ProjectPage.where(:project_id => searches.pluck(:'projects.id'))
end
Cependant, je suis incapable de réussir un appel à la form_search
méthode.
Vous devez vous connecter pour publier un commentaire.
Pour compléter davidb de réponse, deux choses que vous faites mal sont:
1) vous appelez un modèle de fonction à partir d'un contrôleur, lorsque le modèle de fonction n'est définie dans le modèle lui-même. Si vous avez besoin d'appeler
et de définir la fonction avec
2) vous êtes d'appel paramètres du modèle. Dans l'architecture MVC, le modèle ne sais rien à propos de la demande, afin de params n'est pas définie. Au lieu de cela, vous aurez besoin de passer la variable de votre fonction que vous êtes déjà en train de faire...
self
est ce qui me manquaitTrois chose:
1.) Lorsque vous souhaitez créer une classe large de la méthode qui n'est pas limitée à un objet de la classe vous avez besoin de la définir comme
et pas
2.) Cela peut être fait à l'aide d'un
scope
aveclambda
ce sont vraiment des fonctionnalités intéressantes. Comme Cela dans le modèle à ajouter:Vous permettant de communiquer
La secound étape serait d'ajouter un champ à la
ProjectPage
modèle, de sorte que tout est à l'endroit où il appartient à!3.) Lorsque vous appelez une méthode de Classe dans le Contrôleur, vous devez spécifier le Modèle comme ceci:
Déclarer comme ceci dans le modèle
et appel du contrôleur