Haml: link_to vs button_to

8

Soweit ich weiß, wird link_to für get-Methoden und button_to für post-Methoden verwendet.

Auf der anderen Seite wurde mir gesagt, dass mit der HTML5-Semantik <button> für jede Art von anklickbarem ... gut, Knopf verwendet wird. Falls ich eine anklickbare Schaltfläche habe, die einen Benutzer an ein Formular zum Ausfüllen sendet, sollte ich eine button_to oder eine link_to erstellen?

    
Karan 29.04.2012, 17:35
quelle

4 Antworten

15

Es ist einfacher, dass Sie denken. Diese Methoden sind Rails-Helfer und haben nichts mit haml zu tun. Ja, eine Methode ist für get und eine andere für post-Methoden. Wenn Sie Daten an den Controller senden müssen, verwenden Sie button_to (z. B. beim Löschen eines Datensatzes). Andernfalls ist link_to genug.

Darüber hinaus können Sie link_to Buchungsdaten mit :method -Parameter machen:

%Vor%

Beantworten Sie Ihre Frage mit link_to .

    
methyl 29.04.2012, 17:49
quelle
3

Sie sollten Links verwenden, um den Benutzer auf eine Ressource wie einen Artikel zu verweisen.

Aber Sie müssen dazu neigen, Schaltflächen zu verwenden, um auf eine Aktion zu verweisen (z. B. "Erstellen" / "Senden" auf Ihrer Bearbeitungsseite). Wenn dies nicht mit Ihrer Oberfläche übereinstimmt, formatieren Sie sie wie einen Link.

Hier ist der Grund: Sie können Ihren Nutzer nicht auf eine nicht-GET-Aktion über link_to verweisen, wenn ihm die JavaScript-Unterstützung fehlt. Schaltflächen sind also die einzigen Optionen, um in diesem Fall Ihre Sende / Lösch-Aktion auszulösen.

Fühlen Sie sich frei, beide Ansätze zu verwenden, wenn Ihr Link auf eine Seite verweist, die schließlich zu einer Änderung einer Ressource führt (Link / Schaltfläche zu einer Bearbeiten / Erstellen-Seite, die ein Formular anzeigt) dein Fall.

    
jdoe 29.04.2012 18:37
quelle
2

Wenn Sie einfach einen Benutzer an einen beliebigen Ort senden möchten, erhalten Sie eine Anfrage. Sie sollten in diesem Fall link_to verwenden. Übrigens können Sie link_to für Post-Anfragen und andere Anfragen (wie button_to) verwenden, wenn Sie Folgendes angeben: method. Zum Beispiel: =link_to "some path", some_path, :method => :get

    
Mikhail D 29.04.2012 17:50
quelle
1

Der Hauptunterschied zwischen den #link_to und #button_to ist, dass #link_to nur ein Link-Tag A erstellt und eine einfache AJAX-Anfrage ohne zusätzliche Daten erstellt, während #button_to erstellt ein FORM mit benutzerdefinierten Daten, so dass das Formular verwendet werden kann, um eine erweiterte AJAX-Anfrage an einen Webserver zu senden. Die Formulardaten enthalten ein eingebettetes CSRF-Token, das zur Authentifizierung der Anfrage verwendet wird. Im Fall von% co_de muss% CSRF-token serialisiert und in #link_to event gesendet werden.

    
quelle