2016-05-30 150 views
1

不確定我在我的模型下面的代碼:範圍Rails中驗證

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

和下面的驗證在我的控制器:

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

而且我在瀏覽器中得到以下錯誤消息。我不知道這有什麼問題!

範圍未指定。指定:in,:within,:maximum,:minimum或:is選項。

我的看法是:

<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

你混合activemodel的的'validates_length_of':這是所有驗證的首選方法(查看Rails Validation Docs

validates :content, length: { maximum: 140 } 

使用validates_length_of就像你在你的代碼,它會作爲被寫入輔助活動記錄的'長度'助手。 – Pavan

回答

1

使用validates代替。

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