6
votes

appeler une méthode dans le modèle de la vue

J'essaie d'évaluer quel indicateur doit être affiché à côté d'un article en fonction de si elle a été visualisée avant ou non, de nouveaux commentaires, etc. jusqu'à ce que je décide du symbole à utiliser, je veux juste un numéro à afficher. < p> Dans mon modèle de rapport, j'ai xxx

à mon avis j'ai xxx

i obtenir méthode non définie 'Indicateur'

Je pensais avoir eu une saisie sur la façon dont les méthodes fonctionnent ... mais clairement pas, qu'est-ce que je fais mal?


2 commentaires

Veuillez afficher le message d'erreur complet. Incluent-il une classe / un objet ou est cette méthode non définie sur NIL?


Veuillez également afficher l'instruction Controller pour la vue qui fait le @Reports = Signaler.all ou Signaler.Find (...), etc.


3 Réponses :


6
votes

ESSAYEZ

def indicator
    #bunch of if elsif statements returning a number 0-3
end


1 commentaires

Pourriez-vous dire que tout est juste d'appeler une méthode de modèle dans la vue, car nous sautons le contrôleur de cette façon? En outre, si ce n'est pas une bonne pratique, quelle est l'alternative?



2
votes

Votre variable d'itération Signaler code> est utilisé pour passer à travers chaque instance de @Reports code>. Avec Self.Indicator code> Vous déclarez une méthode de classe (via auto.name code>). Cela permettrait donc d'appeler rapport.Indicator code>. Ce que vous voulez, c'est appeler juste sur une seule instance de rapport, vous pouvez donc définir l'indicateur de méthode dans votre modèle comme celui-ci:

def indicator
  #bunch of if elsif statements returning a number 0-3
end


0 commentaires

6
votes

Dans votre vue, vous appelez une méthode d'instance indicateur sur chaque objet de rapport xxx

mais dans votre modèle, vous avez défini une méthode de classe. Donc, pour le faire fonctionner, définissez la méthode de votre indicateur comme méthode d'instance également: xxx


0 commentaires