2017-04-04 1 views
1

Ich habe eine Seite, wo ein deaktiviertes Benutzerkonto aktiviert werden kann - aber bevor sie aktiviert werden können, muss ihnen ein neues Passwort zugewiesen werden. Zur Zeit habe ich zwei Schaltflächen diese Aktionen auszuführen:Wie hängt man einen Aktionsaufruf an eine Übermittlungsschaltfläche in Rails an?

Am Ende der ‚Passwort hinzufügen‘ Form wird diese Taste:

<%= f.submit %> 

Ein wenig weiter auf der Seite gibt es diese Taste ist, die die Sets Status des Benutzers auf ‚aktiv‘:

<%= standard_button 'Activate user', update_status_user_path(@user), 
:method => :patch %> 

Wenn möglich, würde ich die Funktionalität der zweiten Schaltfläche auf die Schaltfläche verfassen hinzufügen.

Ich verstehe die Magie hinter Formen und ihren Knöpfen nicht ganz, also frage ich mich, ob das möglich ist und wenn ja, wie könnte ich das erreichen?

Antwort

0

Sie können sich einen Knopf als Mini-Formular vorstellen. Zeigen Sie die an, um weitere Informationen zur button_to rails-Methode zu erhalten.

In Ihrem form_for gibt es eine URL, die angibt, wo das Formular veröffentlicht wird. In dieser Controller-Methode können Sie die Logik einschließen, um den Status des Benutzers auf 'aktiv' zu aktualisieren. So etwas wie

def some_method 
    user = User.find(params[:user_id]) 
    user.update_attribute(:status, "active") 
end 
+0

Das Formular wird derzeit an eine Kennwortänderungsmethode gesendet, die auch von vielen anderen Seiten verwendet wird. Wenn möglich, würde ich lieber vermeiden, Änderungen an dieser bestimmten Methode vorzunehmen. Es ist nicht möglich, dass ein Button zwei verschiedene Dinge erledigt - ein Formular abschicken und etwas Action nennen? – Teresa

+0

Oder vielleicht verstehe ich Ihre Lösung nicht sehr gut ... – Teresa

+1

Ein Formular kann nur auf eine Aktion posten, so dass die Aktion den Benutzerstatus aktualisieren muss. Sie könnten Javascript verwenden, um den Benutzerstatus zu aktualisieren, aber das wäre nicht ratsam. Eine andere Option wäre, ein verstecktes Feld oder ein Datenattribut in das Formular aufzunehmen. Die Aktion könnte dann nach dem versteckten Feld suchen und den Benutzerstatus nur aktualisieren, wenn das verborgene Feld vorhanden ist. Oder die Formularaktion könnte prüfen, woher die Anfrage kommt und den Benutzerstatus nur aktualisieren, wenn die Anfrage von einer bestimmten Seite stammt. – margo

Verwandte Themen