Rails form_tag sendet keine Parameter, wenn deaktiviert: true

8

Ich habe ein form_tag aus meiner Sicht und ein paar < a href="http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html"> text_field_tag ​​ darin verschachtelt. Ich möchte nicht, dass der Benutzer die Textfelder bearbeitet, also tat ich: disabled = & gt; wahr.

Das Problem: Wenn ich das tue: deaktiviert = & gt; true Der Wert des Textfelds wird nicht in Params-Hash übergeben, wenn ich das tue: readonly = & gt; wahr es sendet die Werte in params hash

Wird das erwartet? Wenn ja, dann wird dies in der Dokumentation nicht erwähnt. Wenn nicht, sollte ich dann ein Problem in GitHub einreichen?

    
Bhavik Shah 21.07.2015, 18:03
quelle

2 Antworten

14

Ja, das ist das erwartete Verhalten. Es wird wahrscheinlich nicht in der Rails-Dokumentation erwähnt, da das Steuerverhalten disabled und readonly durch die W3C-Spezifikation definiert ist.

Weitere Informationen finden Sie in der W3C-Dokumentation für deaktivierte Steuerelemente , die besagt, dass deaktivierte Steuerelemente nicht aktiviert sein können erfolgreich". Eine "erfolgreiche" Kontrolle wird als "gültig" für die Einreichung definiert. Wenn Sie disabled auf true für ein Eingabefeld in Rails setzen, wird es nicht gesendet.

Schreibgeschützte Steuerelemente können jedoch erfolgreich sein. Wenn Sie also möchten, dass der Wert gesendet, aber nicht bearbeitet werden kann, sollten Sie readonly auf true setzen.

    
Dave Powers 21.07.2015, 18:16
quelle
4

Ja, das wird erwartet, aber es hat nichts mit Rails zu tun. Gemäß der HTML5-Spezifikation werden Formularfelder, die disabled sind, beim Übermitteln des Formulars übersprungen (siehe 4.10.22.4 Konstruieren des Formulardatensatzes ).

Wenn Sie nicht möchten, dass der Benutzer das Feld bearbeiten kann, aber dennoch seine Daten mit dem Formular übermitteln möchten, verwenden Sie das Attribut readonly , z. B .:

%Vor%     
Jordan Running 21.07.2015 18:15
quelle

Tags und Links