Ich habe eine Frage zu Formularen. Ich habe ein ziemlich standardisiertes Formular, das einen Beitrag (in meiner App eReport genannt) mit einem Titel und einem Textkörper speichert. Die Tabelle hat auch ein "published" -Feld, das boolesch ist. Der gespeicherte eReport wird nur auf der öffentlichen Website angezeigt, wenn dieses Feld auf "true" gesetzt ist, wobei "false" der Standardwert ist.
Anstelle des Standard-Kontrollkästchens möchte ich zwei Schaltflächen am Ende des Formulars anzeigen: eine Schaltfläche "Jetzt veröffentlichen" und eine Schaltfläche "Als Entwurf speichern". Wenn der Benutzer die erste drückt, wird das veröffentlichte Feld auf wahr gesetzt. Wenn letzteres, dann falsch. In PHP habe ich zwei Submit-Felder mit unterschiedlichen Namenwerten angezeigt und behandle dann die Eingabe mit einer if / else-Anweisung, um die richtige zu erstellende SQL-Abfrage zu bestimmen. In Rails gehe ich davon aus, dass ich diese Logik im Controller unter der entsprechenden Aktion platzieren würde, aber ich bin mir nicht sicher, wie man den Namen oder die ID-Werte von Schaltflächen manipuliert.
Für den Datensatz verwende ich Formtastic, aber wenn mir jemand mit den Standard-Rails-Formular-Tags zeigen könnte, ist das auch in Ordnung. Hier ist der Code für mein Formular, wie es gerade steht:
%Vor%Vielen Dank im Voraus für die Hilfe!
Ich weiß nicht über formtastic, aber mit dem Standard-Formular Builder für Rails, könnte man es so machen:
%Vor%Dann können Sie in der Steuerung diese in params auswählen:
%Vor%Zusätzlich zu @iddlefingers Antwort, hier ist eine Ansicht des Protokolls der Anwendung (Striping einige nutzlose Params aufgrund der Erklärung)
%Vor% Hier können wir sehen, dass comentar
der Name des Parameters ist und "Confirmar"
sein Wert ist, der auch der Text der Schaltfläche ist.
welches von submit_tag "Confirmar", :name => 'comentar'
Also könnten Sie im Allgemeinen (wenn Sie die Anzahl von params
reduzieren möchten, mit denen Sie arbeiten) mehrere submit_tag "onevalue", :name => 'SAMEname'
, submit_tag "othervalue", :name => 'SAMEname'
...
und rufen Sie sie in Ihrem Controller
ab %Vor%Tags und Links ruby-on-rails forms formtastic