Est-il possible de faire référence aux variables de classe ruby dans une vue?Variables de classe dans les vues de rails?
Répondre
L'approche la plus courante consiste à envelopper la variable de classe dans une méthode d'assistance:
# in /app/controllers/foo_controller.rb:
class FooController < ApplicationController
@@bar = 'baz'
def my_action
end
helper_method :bar
def bar
@@bar
end
end
# in /app/views/foo/my_action.html.erb:
It might be a class variable, or it might not, but bar is "<%= bar -%>."
Malheureusement, la classe (@@variables
) n'est pas copiée dans la vue. Vous pouvez toujours être en mesure d'obtenir à eux via:
controller.instance_eval{@@variable}
ou
@controller.instance_eval{@@variable}
ou autre chose de moins grave. 99% sur 100 personnes ne devraient jamais faire cela, ou du moins je ne peux pas trouver une bonne raison.
alors que ce n'est pas ce que je prévois d'utiliser, il répond à ma question initiale –
La réponse de Rosen est agréable car il cache ce genre de variable « bar » est, mais si vous avez beaucoup de ces variables, le besoin de définir un tas de méthodes auxiliaires est peu attrayant. J'utilise ce qui suit dans mon contrôleur:
@bar = @@bar ||= some_expensive_call
De cette façon, « some_expensive_call » ne se fait qu'après, et le résultat est copié dans @bar pour chaque instance (donc le point de vue peut alors y accéder comme @bar).
- 1. Les variables d'instance ajoutées dans les rails d'aide ne sont pas disponibles dans les vues (modèles)?
- 2. Rails de les params 'variables
- 3. rails: comment lier les valeurs dans les migrations de données aux variables de classe/modèle?
- 4. Rails éditant le HTML dans les vues
- 5. Ruby and Rails: Modificateurs de déclaration dans les vues?
- 6. Routes polymorphes dans les rails - dans les vues
- 7. Vues dans Rails SECHAGE (number_to_currency)
- 8. importer toutes les variables de classe parente
- 9. Objets associés non accessibles dans les vues dans Rails?
- 10. Rails - Vues abstraites/partagées
- 11. Variables de cache ou de classe?
- 12. Conditions dans les vues
- 13. Spécification du type de classe d'héritage dans les Rails Formulaire
- 14. Les sous-vues n'apparaissent pas dans la classe UIView
- 15. Passer des variables à Django Commenter Vues
- 16. Rails Réservé Noms de classe
- 17. AS2: charger les variables de classe avec sendandload
- 18. Quand les variables de classe sont-elles chargées?
- 19. PHP __get et les variables de classe privée
- 20. Variables de classe thread-safe Ruby
- 21. Utilisation de MVT Html.RadioButton dans les vues
- 22. Déclarer les variables membres avec la classe gen dans Clojure
- 23. Ruby on Rails - Champ d'application des variables d'instance avec des vues partielles
- 24. Quand les variables doivent-elles être définies dans une classe
- 25. Objective C Static Classe Variables de niveau
- 26. Accès date() variables envoyer à partir de l'assistant de date dans les rails
- 27. Utilisation de variables parents dans une classe étendue en PHP
- 28. Rails variables actives enregistrement d'instance
- 29. Version mobile de vues pour Ruby on Rails
- 30. C# Variables de variables membres utilisées par la méthode de la classe de base
à peu près la solution évidente, je ne sais pas pourquoi je n'ai pas opté pour cela en premier lieu –