2013-11-26 31 views
0

我有一個名爲標籤的屬性metets模型meet.rb。 用戶用單個form_for輸入它們。 問題是:我怎麼能限制我的模型,如果用戶輸入多於3個單詞,他會得到一個錯誤信息。 或者,如果你可以用JavaScript顯示我的解決方案,它也會很好。 謝謝!模型軌道中的限制字數

+1

將標籤作爲數組或字符串傳遞嗎? –

+0

請顯示您的控制器和型號代碼。 –

回答

3

我可能會寫自定義的驗證方法Meet模型:

class Meet < ActiveRecord::Base 

    # ... 
    validate :no_more_than_three_tags 
    # ... 
    def no_more_than_three_tags 
    errors.add(:tags, 'more than three words') if tags.split(/\W/).count > 3 
    end 
end 
0

沒有任何代碼可以關閉,我會認爲你有一個帶有參數,標籤的方法。如果是這樣,你可能會這樣做。

def method(tags) 
    array = tags.split(" ") 
    raise ArgumentError.new("More than three words entered") if array.size > 3 
end 
0

,最好去檢查客戶端
app/assets/javascripts
創建word_couter.js.coffee包括對app/assets/javascripts/application.js.coffee
這文件#= require word_couter

$ -> 
    $('[name="you_input"]').on "change", -> 
    input_size = $(@).val().split " " 
    if input_size.length > 3 
     ...some code here .... 

我希望這可以幫到你!