Wo haben link_to_function verschwinden in Rails 3?
-
20-09-2019 - |
Frage
Ich habe nur das Spiel mit Rails 3 Beta und bemerkte, dass link_to_function ist jetzt weg. Ich nehme an, es ist eine alternative Methode zum gleichen Ergebnis (Onclick-Ereignis?) Zu erreichen, aber ich frage mich, ob es ein Rails-3'y Weg, es zu tun. TIA.
Lösung
Rails 3 scheint mit Prototype-Helfer für einen weniger aufdringlichen / JS-Bibliothek agnostischen Ansatzes zu haben, beseitigt. Das Ziel ist es, alle Inline-Javascript von Rails erzeugt zu beseitigen. Prototype Helper erzeugt so ziemlich alle JavaScript.
Nun kann jeder der nicht entfernten Varianten von Helfern die richtige Javascript für einen Remote-Anruf in Ihrer JS-Bibliothek der Wahl erzeugen nur, indem das:. Remote => true Option
Leider ist dies nicht halten gilt für die x-Funktion Methoden. Für die Zeit gibt es wobei die Prototyp Legacy-Helfer , die nicht mehr zum Kernteil von Rails sind.
Sie können auch Call verwenden, wie definiert in ActionView :: Helpers :: PrototypeHelper :: JavascriptGenerator :: GeneratorMethods JavaScript-Code zu liefern: Onclick als html_option für link_to, aber das ist nicht gerade hübsch
.Beispiele:
Rails < 3 | Rails 3
link_to_remote "target", url | link_to "target", url, :remote => true
form_remote_for @post | form_for @post, :remote => true
etc ....
oder etwas in diesem Sinne. Ich habe Probleme beim offiziellen Dokumentation zu finden, meine Ansprüche zu sichern. So der Release Notes wird jetzt zu tun hat.
Bevor Sie es verwenden können, werden Sie die richtigen js Quelldateien enthalten müssen. Stellen Sie sicher, dass Sie laden prototype.js und rails.js, oder die Bibliothek und Treiber für JS Rahmen der Wahl an ihrem Platz.
Denken Sie daran, Rails 3 in der Beta ist jetzt. Aber das bedeutet nicht, es gemacht wird. Ich habe ehrlich gesagt keine Ahnung, wie link_to_function ersetzt. Es geht gegen das Ideal der unaufdringlichen Javascript.
Andere Tipps
Um meine eigene Frage zu beantworten, scheint dies funktioniert und ist ausreichend für das, was ich brauche:
link_to "name", nil, :onlick => "alert('Hello, world!')"
link_to_remote kann wie diese
erfolgenlink_to "Ziel",: remote => true
und eine Ajax-Post zu tun / erhalten Sie haben
link_to "Ziel", {: controller => Controller: action => Methode,}: remote => true
In Schienen 2 ist wie diese
warlink_to_remote "Ziel",: url => {: Controller => Controller: action => Verfahren,}: Remote => True