Nur eine weitere Frage "warum ist es so?": Ich habe bemerkt, dass auf private Hilfsmethoden immer noch in Ansichten zugegriffen werden kann. Warum ist das? Und gibt es eine Möglichkeit, dies zu verhindern (z. B. wenn Hilfsmethoden verwendet werden, die nur von einem anderen Helfer aus aufgerufen werden sollen)?Warum können in Sichten noch auf private Hilfsmethoden zugegriffen werden?
Antwort
Helfer sind modules that get mixed in zu den Ansichten. Dies bedeutet, dass öffentliche, geschützte und private Methoden im Helper zu öffentlichen, geschützten und privaten Methoden in den Ansichten werden.
Ich glaube nicht, dass Sie tatsächlich die Hilfsmethoden aus der Ansicht ausblenden können. Sie müssen etwas wie eine Hilfsklasse tun, die Sie in der Helferin instanziieren und dann Anrufe an sie delegieren - klingt, als könnte sie jedoch schnell unordentlich werden. :)
Helfer sind im Grunde kleine Codeschnipsel, die in Ihren Ansichten aufgerufen werden können, damit Ihr Code DRY bleibt - also jeder Code, den Sie regelmäßig wiederholen, kann höchstwahrscheinlich in einen Helfer verschoben werden.
Die Verwendung von Helfern ist einfach, jeder Controller hat seine eigene Hilfsdatei oder Sie können Helfer in die Hilfsdatei der Anwendung schreiben, wenn sie in der gesamten Anwendung verwendet wird.
zum Beispiel - siehe http://paulsturgess.co.uk/articles/49-using-helper-methods-in-ruby-on-rails
https://web.archive.org/web/20130127041747/http://paulsturgess.co.uk/articles/49-using-helper-methods-in-ruby-on-rails – danuker
- 1. Kann auf eine private Variable über ihre Adresse zugegriffen werden?
- 2. Warum haben die Array-Klassen keine Hilfsmethoden?
- 3. Java - Soll auf private Instanzvariablen in Konstruktoren über die Methode getters and setters zugegriffen werden?
- 4. Warum können indizierte Sichten kein MAX() - Aggregat haben?
- 5. Warum kann nicht auf meinen jQuery.Widgets-Namespace zugegriffen werden?
- 6. Warum werden private Mitglieder des Basisklassenobjekts immer noch von abgeleitetem einem zugewiesen?
- 7. Können Sie Beziehungen zu Systemtabellen/Sichten haben?
- 8. Angular Service-Funktionen können nicht in Jasmine Tests zugegriffen werden
- 9. Auf eine private Variable kann von einem anderen Objekt desselben Typs zugegriffen werden?
- 10. Wie kann auf die noch nicht sichtbare UITableView-Zelle zugegriffen werden?
- 11. Wie kann auf private Objekte im Skript einer Komponente zugegriffen werden?
- 12. Warum kann auf das private Member einer geschachtelten Klasse mit den Methoden der umschließenden Klasse zugegriffen werden?
- 13. Zugriff auf RequestContext in klassenbasierten generischen Sichten?
- 14. Hilfsmethoden für Modelle in Rails
- 15. TSQL-Fremdschlüssel in Sichten?
- 16. Können private Setter in einem Entitätsmodell verwendet werden?
- 17. Wie kann auf die Datenbankklasseninstanz zugegriffen werden?
- 18. Wie kann auf den Diktatwert zugegriffen werden?
- 19. Wie kann auf diese Daten zugegriffen werden?
- 20. Sichten für $ RecyclerViewHolders können nicht an ButterKnife.bind (this, itemView) gebunden werden; in RecyclerViewHolders
- 21. Wie kann auf die Aufrufeigenschaft zugegriffen werden?
- 22. Warum werden meine Seiten noch nicht gezippt?
- 23. Warum darf auf ein privates Feld eines anderen Objekts zugegriffen werden?
- 24. Warum können Cookies deaktiviert werden?
- 25. Warum platziert OpenJDK private Methoden in vtable?
- 26. freeSSHD kann nicht von scp zugegriffen werden
- 27. Wie können globale Variablen erstellt werden, auf die mit Express/Node.JS in allen Ansichten zugegriffen werden kann?
- 28. Django-Entwicklungsserver kann nicht remote zugegriffen werden
- 29. Warum funktionieren die Instanzvariablen meines Controllers nicht in Sichten? (Rails)
- 30. Ist CAFilter immer noch eine private API?
Vielen Dank. Und so ist es. :-) –