2016-05-30 1 views
1

Ich habe den folgenden Code in meinem Modell:Bereich nicht spezifiziert in Rails Validierung

class Tweet < ActiveRecord::Base 
validates_length_of :content, length: { maximum: 140 } 

und die folgende Validierung in meinem Controller:

def new 
    @tweet = Tweet.new 
    @maximum_length = Tweet.validators_on(:content).first.options[:maximum] 
end 

Und ich bekomme die folgende Fehlermeldung in meinem Browser. Ich habe keine Ahnung, was damit nicht stimmt!

Bereich nicht angegeben. Geben Sie die Option: in,: innerhalb,: maximum,: minimum oder: is an.

Meine Ansicht ist:

<div class="form-group"> 

<%= form_for @tweet do |f| %> 
chars left: <span id="counter" data-maximum-length = "<%[email protected]_length%>"<%= @maximum_length%></span> 
<%= f.text_field :content, maxlength: @maximum_length, id: 'content' %> 

<button type="submit" class="btn btn-primary">Submit</button> 
<%end%> 

<script> 
$(document).ready(function(){ 
    var content = $("#content"); 
    var counter = $("#counter"); 
    var max_length = counter.data("maximum_length"); 

    content.keyup(function(){ 
    counter.text(max_lnegth - $(this).val().length); 
    }); 
    }); 
</script> 
+0

Du activemodel des 'validates_length_of' Misch Helfer mit 'Länge' Helfer des aktiven Eintrags. – Pavan

Antwort

1

Verwenden validates statt. Dies ist die bevorzugte Methode für alle Validierungen (die Rails Validation Docs sehen

validates :content, length: { maximum: 140 } 

Mit validates_length_of wie Sie in Ihrem Code haben, wäre es wie folgt geschrieben werden:

validates_length_of :content, maximum: 140 
0
validates_length_of :content, maximum: 140