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?
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.
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 .:
Tags und Links ruby-on-rails-4