2012-04-03 6 views
0

Guten Abend,Rails, Formtastic: Drei Schaltfläche „Senden“, jeder setzt den Wert eines bestimmten Attributs unterschiedlich

Ich möchte ein Formular mit einem einzigen Feld (Name) einzurichten, in dem die Benutzereingaben ihr Name, und dann wählen sie eine von drei Tasten.

Jeder dieser Schaltflächen sollte gleichzeitig einen bestimmten Attributwert festlegen und das Formular senden.

Ein konstruiertes Beispiel („xxxx“ ist eine Taste):

Name : _________ 
"Good" "Sad" "Tired" 

Dies würde den Namen des Benutzers speichern, und dann ja/nein/vielleicht auf die „users_feeling“ -Attribut. Ich möchte keine Radio-Box für das Nutzer-Feeling-Attribut und dann einen separaten Send-Button haben.

Jede Hilfe, die Sie zur Verfügung stellen könnten, würde geschätzt werden !!

+0

Dies könnte die Situation sein, in der es einfacher sein könnte, formtastic nicht zu verwenden. –

+0

Ich dachte eigentlich, dass ich 5 Minuten nachdem ich das gepostet habe .... Ich bin immer noch ein Anfänger, um ehrlich zu sein ... Welches HTML-Element würde ich für jeden Button verwenden? Kann ich immer noch

+0

Hoffe die Antwort hilft. Es ist ziemlich allgemein, aber ich hoffe, dass du es benutzen kannst, um etwas herauszufinden. –

Antwort

3

Es gibt zwei Möglichkeiten, wie dies im Allgemeinen zu tun ist.

IMHO der bessere ist, einfach das Attribut hinzufügen, das Sie als ein verstecktes Feld festlegen möchten, und dann schreiben Sie einige Javascript, um es vielleicht auf einige Datenattribute auf der Schaltfläche festzulegen. So etwas wie this:

$('.my_form button').click -> 
    $('#my_hidden_field').val ($ @).data 'attribute-name' 
    $('.my_form')[0].submit() 

Die andere ist, dass jede Taste einreichen seine value als Parameter übergeben, wenn Sie das Formular abschicken. Sie können dies in Ihrem Rails-Controller wie jeden anderen Wert erkennen. Also, wenn Sie diesen HTML haben:

<input type=submit name=feeling value=Good /> 
<input type=submit name=feeling value=Sad /> 
<input type=submit name=feeling value=Tired /> 

Dann in Ihrem Controller params[:feeling] sollte der Wert der Schaltfläche geklickt halten. Warum mir diese Lösung nicht besonders gefällt, ist, dass der String value auch dem Benutzer angezeigt wird, der Ihren Controller mit Ihrer Ansicht ziemlich ekelhaft koppelt. Wenn Sie in Zukunft Ihre App lokalisieren möchten, wird Sie das wahrscheinlich beißen.

+0

Danke !! Ich schätze die Hilfe - tut mir leid, es ist so einfach :) – Brandon

+0

Eine winzige Änderung: Verwenden Sie einen anderen Namen für jede Schaltfläche, und testen Sie, ob ein Wert vorhanden ist. Nur die Schaltfläche, auf die Sie klicken, wird an den Server gesendet. – fabspro

Verwandte Themen