Rails, validiert maxlength des Eingabefeldes

8

Ich habe ein Kommentar-Modell, bei dem ich die maximale Länge eines Kommentars begrenzen möchte:

%Vor%

Aus meiner Sicht habe ich ein Eingabefeld deklariert:

%Vor%

Das Limit für das Eingabefeld funktioniert wie erwartet, es beschränkt sich auf maximal 500 Zeichen.

Das Modelllimit funktioniert jedoch nicht wie erwartet. Ein Text von 500 Zeichen mit Zeilenumbrüchen gibt einen Validierungsfehler. Das Modell zählt Zeilenumbrüche als zwei Zeichen (und mögliche andere Zeichen auch). Also

Dieser Eingang funktioniert, keine Zeilenumbrüche:

%Vor%

Das wird nicht:

%Vor%

Gibt es einen einfachen Weg, um validates_length_of Newline (und andere) als ein Zeichen zu zählen?.

=== Ergebnis1 ===

Ich habe die großartigen Antworten von Jon und Dario kombiniert und dies erstellt:

%Vor%     
finlir 21.11.2012, 15:43
quelle

3 Antworten

4

Browser senden Zeilenumbrüche aus Textareas als "\ r \ n" Effektiv wird jede neue Zeile als zwei Zeichen gezählt, wenn der Standard-Längenprüfer von Rails verwendet wird.

Also entweder eine Ersetzungsmethode im Controller oder einen Validator mit benutzerdefinierter Länge.

    
Jon Andersen 21.11.2012, 15:46
quelle
4

Sie können die Tokenizer-Option des Längen-Validators verwenden, um nur die Wörter und nicht die Zeilenumbrüche zu zählen.

%Vor%

Weitere Informationen finden Sie hier: Aktive Datensatzüberprüfungen und Rückrufe

    
Dario Barrionuevo 21.11.2012 16:08
quelle
1

Sie könnten

verwenden %Vor%

Auf diese Weise erhalten Sie genau die Zeichenfolge, die Sie erwarten.

Diese Texteingabe:

  

Dies ist eine Zeichenfolge mit

     

ein Zeilenumbruch

führt zu dieser Zeichenfolge

  

"Dies ist eine Zeichenfolge mit einem Zeilenumbruch"

Standardmäßig zählt der rails validator jedes Zeichen und erhält eine Länge von 36

%Vor%

Wenn Sie den Tokenizer mit dem regexp /./ verwenden, erhalten Sie ein Ergebnis von 35 wie erwartet (jedes Zeichen + Leerzeichen + 1 Zeilenwechsel), da es \n stript, aber stattdessen \r zählt.

%Vor%

Weitere Informationen zur String-Methode scan finden Sie unter Ссылка

Für weitere Informationen zu regexp könntest du ein wenig mit Ссылка

spielen     
coderuby 12.05.2016 18:37
quelle

Tags und Links