2013-11-02 29 views
0

,當我離開「說明」字段爲空,我有這種形式simple_form犯規阻止發送請求,而不必填字段

= simple_form_for @category.fields.build, url: category_fields_path(@category) do |f| 
    = f.input :kind, collection: Field::FIELD_TYPES, prompt: "Choose field type" 
    = f.input :description 
    = f.submit "Add field" 

和這個領域模型

class Field < ActiveRecord::Base 
    FIELD_TYPES = %w(integer float date string text) 

    validates :description, presence: true 
    validates :kind, presence: true 

    belongs_to :category 

end 

,沒有請求發送,我得到的通知'請填寫這個字段'。這是我想要的。另一方面,當描述被填寫但種類不是時,請求仍然被髮送到「創建」操作!沒有字段被創建,但是'描述'需要被再次填充。在這種情況下不應有任何要求。任何想法如何解決這個問題?

回答

0

雖然,我沒有確切的答案來解決您的問題,但您應該從檢查HTML輸出開始。簡單依靠HTML5 to provide front-end validation。所有輸入應具有required屬性,以啓用驗證。也許有一個bug,在這種情況下,simple_form不會輸出required屬性。

另一件需要考慮的因爲它是HTML5,請諮詢瀏覽器支持:http://caniuse.com/#feat=form-validation。從理論上講,您可能正在使用對錶單驗證支持有限的瀏覽器進行測試。

如果你發現simple_from沒有輸出required爲您kind燃料,試圖迫使其:

= f.input :kind, collection: Field::FIELD_TYPES, prompt: "Choose field type", required: true 
+0

已經嘗試過強迫它,它不工作。我在Chrome上測試,所以它應該很酷 – Leo

+0

你有沒有檢查HTML輸出?這是你應該做的第一件事...... –

+0

然而,我不想混淆html,我需要這個基於模型驗證工作。 – Leo

0

我得到了我在簡單的表單GitHub的問題,話題here答案。總結一下,問題是提示,確認是不是(?還)有它正常工作,解決辦法是更換它,比如像這樣:

= f.input :kind, collection: Field::FIELD_TYPES, include_blank: "Choose field type", label: false