1

フォームがあり、ユーザーが 1 種類のファイルのみをアップロードできるようにしたいと考えています。クライアント側の検証を使用していますが、ファイル タイプの検証が期待どおりに動作しません。次の 2 つの方法でファイルの種類を検証しようとしました。

  validates :doc_type, :allow_blank => true, :format => {:with => /\A.*\.(pdf|PDF)\z/, :message => 'must be PDF file.'}

そしてまた

validates_attachment_content_type :doc_type, :content_type => { :content_type => "application/pdf" }

ただし、不正なファイル タイプに関するエラーはClient side validationでは表示されず、通常の検証エラーとして表示されます。

クライアント側の検証で検証エラーを表示する方法はありますか?

4

1 に答える 1

1

バックエンドに送信する前に、まずクライアント側で jquery 検証プラグインを使用することをお勧めします。これにより、フロント エンドでファイル タイプを検証できます。

http://docs.jquery.com/Plugins/Validation/Methods/accept

これはサンプルで、「フィールド」を必須にし、「.xls」または「.csv」で終わります。

$("#myform").validate({
  rules: {
    field: {
      required: true,
      accept: "xls|csv"
    }
  }
});

jquery 検証プラグインを使用することの優れた点は、電子メール、パスワードなど、他のクライアント側の検証も便利になることです。

于 2012-04-23T00:24:21.093 に答える