2016-04-19 13 views
0

Ich mache eine Sammlung auswählen, die unter bestimmten Umständen deaktiviert werden kann. Aber wenn ich diesen Formularinhalt deaktiviere, wähle ich immer noch einen Wert aus der Auswahl aus, so dass selbst wenn er deaktiviert ist, ich das Formular mit einem Wert für dieses Feld senden kann.Schienen deaktiviert Option in Formularhelfer

Tatsache ist, wenn das Formular nicht deaktiviert ist und der Benutzer etwas auswählen muss, sendet es an den Schienenserver den Wert, den der Benutzer setzt. Wenn es jedoch deaktiviert ist und der Benutzer nicht auswählen kann, soll es immer noch den Standardwert senden, den ich für den Server ausgewählt habe, aber es sendet NULL.

Hier ist die collection_select in HAML:

= f.collection_select :billing, Task.billings.keys, :to_s, :humanize, 
{ selected: ("inherit" if @parent_task_id) }, 
{ class: "form-control #{(Task.find(@parent_task_id).billing != "unspecified") if [email protected]_task_id.nil?}", 
disabled: ((Task.find(@parent_task_id).billing != "unspecified") if [email protected]_task_id.nil?) } 

Wenn ich die Elementen in meinem Browser aussehen (im abgeschalteten Fall) heißt es, dass "erben" ausgewählt ist.

Ist es eine klassische Regel von Schienen, wenn ein Formularinhalt deaktiviert ist, nimmt es seinen Wert nicht und sendet null, wie es param zum Server ist?

Danke für Ihre Hilfe! :)

Antwort

2

Das ist das erwartete Verhalten gemäß HTML-Spezifikationen. In Ihrem Controller können Sie prüfen, ob der Rechnungsschlüssel im Params-Hash vorhanden ist, und diesen Wert entsprechend festlegen.

+0

Danke für die Informationen und Ihre Lösung. Ich war so auf die Sichtweise konzentriert, dass ich komplett vergessen habe, dass ich das im Controller machen könnte. Vielen Dank! Einen schönen Tag noch :) – Naarsh

+0

Ich bin froh, dass ich helfen konnte. Gleichfalls! Bitte, würdest du meine Antwort als "akzeptiert" markieren, versuche ich mein nächstes Privileg zu bekommen :), danke. – margo

Verwandte Themen