2016-08-08 28 views
1

Ich mache eine Rails-App mit einem einfachen Formular (mit Bootstrap).Rails - einfache Form - boolesches Attribut akzeptiert keine falsche Optionsfeldauswahl

Ich habe diese Frage in meiner Form:

<%= f.input :ethics, as: :radio_buttons, label; 'Is an ethics review relevant?' %> 

Die Ethik-Attribut ist ein boolean in meinem Tisch.

Das Formular rendert mit Optionsfeldern für Ja/Nein.

Der Standard zeigt als nein - aber wenn das die Antwort ist, die ich geben will, stecke ich fest, weil ich das Formular nicht einreichen kann. Ich erhalte einen Fehler, der besagt, dass eine Antwort erforderlich ist.

Warum erkennt nicht einfach formular false als boolsche Antwort?

Das Protokoll zeigt:

Processing by ProjectsController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"", "project"=>{"title"=>"asdfsdf ", "byline"=>"", "description"=>"asdfsdf ", "problem"=>"", "solution"=>"", "remark"=>"", "ethics"=>"false", 
+0

Können Sie fügen Rails-Server-Protokoll, das Sie sehen, wenn Sie das Formular einreichen? –

+0

Fügen Sie das vollständige Protokoll von Anforderung zu Antwort hinzu. –

+0

Auch die Fehlermeldung * eine Antwort ist erforderlich *, aber ich sehe kein solches Feld im Protokoll. Haben Sie ein Modell namens Antwort? –

Antwort

0

Sie haben vergessen, wahrscheinlich nur das ethics Feld in der Liste der erlaubten Attribute in Ihrem Controller hinzuzufügen.

params.require(:project).permit(..., :ethics) 

Sie sollten auch keine presence Validierung im Modell. Weil false falsch ist und für die Validierung false zurückgibt.

Verwenden

validates :ethics, inclusion: { in: [ true, false ] } 
+0

Ich habe versucht, von OP zu wissen, dass Sie sicher waren, um mich selbst zu sichern. Aber OP lieferte keine weiteren Log -_- –

+0

Nein - es ist da. Ich erhalte keinen Fehler, wenn ich das Optionsfeld "Ja" wähle. – Mel

+0

@Mel Welches DBMS verwenden Sie? –