2012-09-06 102 views
0

我的模型:Rails的,簡單的形式,和客戶端驗證工作不

class Hotel < ActiveRecord::Base 
attr_accessible :name 
belongs_to :user 
has_many :room_types 
validates :user_id, presence: true 
validates :name, presence: true, length: { in: 2..15 } 
end 

形式代碼:

<%= simple_form_for @hotel, :validate => true do |f| %> 
    <%= f.input :name %> 
    <%= f.submit 'Create Hotel' , :class => 'btn btn-primary', :type => 'submit' %> 
    <% end %> 

似乎有不被任何客戶端驗證正在執行。我可以在不填寫任何信息的情況下提交表格。有任何想法嗎?

編輯:好吧,我看着我的頁面的源代碼,它有這樣的錯誤:

窗口[ 'new_hotel'] = { 「類型」: 「SimpleForm :: FormBuilder」, 「error_class」:「棄用警告:[SIMPLE_FORM] SimpleForm.error_class已被棄用且無效。(在(eval)處從error_class調用:1)「,」error_tag「:」DEPRECATION WARNING:[SIMPLE_FORM] SimpleForm.error_tag已被棄用且無效。 (eval)處的error_tag調用:1)「,」wrapper_error_class「:」DEPRECATION WARNING:[SIMPLE_FORM] SimpleForm.wrapper_error_class is deprecated and no effect。(called from wrapper_error_class at(eval):1)「,」wrapper_tag「: 「(DIVRECATION警告:[SIMPLE_FORM] SimpleForm.wrapper_tag已棄用且無效)(在(eval)處的wrapper_tag調用:1)」,「validators」:{「hotel [name]」:{「presence」:{「message 「:」不能空白「},」長度「:{」messages「:{」maximum「:」太長(最多15個字符)「},」maximum「:15}}}};

回答

3

你必須建立browser_validations選項在config/initializers/simple_form.rb文件

# Tell browsers whether to use default HTML5 validations (novalidate option). 
# Default is enabled. 
config.browser_validations = true 

PS不要忘了運行

$ rails g simple_form:install 

生成初始化。

+0

好,現在名稱字段開始灰色。當我點擊它時,它會變紅,然後當我鍵入一個字母時,它會變綠。所以它不起作用,但至少現在正在做一些事情。關於如何使其完全正確工作的任何想法? –

+0

在初始化程序中查找'config.wrappers'部分。有一些選項,比如'b.optional:maxlength','b.optional:pattern'等等。 –

+0

我改變了這個b.use,但它似乎沒有改變任何東西:#從字符串輸入的長度驗證計算maxlength b.use:maxlength –