0

私はこのフォームを持っています

= 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

「説明」フィールドを空のままにすると、リクエストは送信されず、「このフィールドに記入してください」という通知が表示されます。これは私が欲しいものです。一方、説明が入力されているが種類が入力されていない場合でも、リクエストは「作成」アクションに送信されます! フィールドは作成されませんが、「説明」を再度入力する必要があります。そのような状況では、要求はありません。これを修正する方法はありますか?

4

2 に答える 2

0

Simple Form github's issue topic hereで回答を得ました。要約すると、問題は迅速で、検証は (まだ?) 正しく動作していません。解決策は、たとえば次のように置き換えることです。

= f.input :kind, collection: Field::FIELD_TYPES, include_blank: "Choose field type", label: false
于 2013-11-02T12:40:11.480 に答える
0

ただし、あなたの問題に対する正確な答えはありませんが、HTML出力の確認から始めるべきです。Simple from は HTML5 に依存してフロントエンド検証を提供しますrequired検証を有効にするには、すべての入力に属性が必要です。おそらくバグがあり、この特定のケースでは、simple_form はrequired属性を出力しません。

HTML5 であるため、考慮すべきもう 1 つの点については、ブラウザー サポートを参照してください: http://caniuse.com/#feat=form-validation。理論的には、フォーム検証のサポートが制限されているブラウザーでテストしている可能性があります。

simple_from がrequiredあなたのkind燃料に対して出力しなかったことに気付いた場合は、それを強制してみてください:

= f.input :kind, collection: Field::FIELD_TYPES, prompt: "Choose field type", required: true
于 2013-11-02T11:55:57.673 に答える