0

J'ai une fonction qui convertit un tableau en un hachage que je voudrais utiliser dans tous les fichiers du modèle, du contrôleur et de l'application rails. Est-ce que cela viole un principe de conception de base, ou est-ce que je manque quelque chose de vraiment évident?Rails- Utilisation d'un ensemble de fonctions à travers la vue, le contrôleur et le modèle

MISE À JOUR: Il s'agit en fait d'une question de génie logiciel. Je veux comprendre pourquoi certaines choses «commodes» ne sont pas autorisées dans les rails, et je soupçonne que c'est précisément parce qu'ils ne veulent pas que nous le fassions

Répondre

1

Ceci est probablement une mauvaise pratique. Il serait probablement préférable de toujours travailler avec des tableaux et des hachages dans vos contrôleurs et modèles et, si nécessaire, les convertir dans la vue à l'alternative. En d'autres termes, si les données sont représentées nativement en tant que matrice dans votre application, utilisez-la de cette manière et, si nécessaire, modifiez-la d'abord et affectez-la ou convertissez-la dans la vue à l'aide d'un assistant. .

Voir les aides globales vont dans: aides/application_helper.rb

Si vous devez appeler une aide d'un contrôleur, vous pouvez définir encore là et je crois que vous pouvez faire:

def Something 
    .... 
    hashData = @template.helper(arrayData) 
end 

Appel aides dans un modèle est vraiment pas une bonne idée, il n'y a pas de point. Comme note finale, encapsuler cette logique dans une bibliothèque serait probablement idéal, vos contrôleurs peuvent appeler une bibliothèque & vos assistants de vue peuvent aussi bien.

0

Je pense que vous êtes: les vues ne devraient pas avoir besoin de cette méthode. Le contrôleur doit le faire et le transmettre à la vue pour l'affichage. Le contrôleur ou, mieux encore, la couche de service peut appliquer cette méthode à un objet de modèle, mais il y a peu de raison qu'un objet de modèle le sache.