0

simple_form を使用してメール フィールドを表示します。

= f.simple_fields_for :user do |f|
 = f.input :email, wrapper: :append, pattern: false do
   = f.input_field :email, type: "email"

どういうわけか、常に入力フィールドのパターンが設定されていますが、代わりに電子メール入力フィールドの HTML5 検証を使用したいと考えています。

simpleform がパターンを設定しないようにする方法はありますか?

4

3 に答える 3

2

SimpleForm にモンキー パッチを適用できます。

module SimpleForm
  module Components
    module Pattern
      def pattern
        # Deactivated for good:
        #input_html_options[:pattern] ||= pattern_source
        nil
      end
    end
  end
end

これで、検証からパターンが生成されなくなりました。パターンを必要とする各入力に手動でパターンを追加する必要があります。例:

= f.input :name, pattern: "[a-zA-Z]+"
于 2013-10-23T23:27:18.297 に答える
0

私はむしろアプリディレクトリにstring_input.rbファイルを作成したいと思います...「inputs」という名前のフォルダーにある可能性があり、このコードがあります

class StringInput < SimpleForm::Inputs::StringInput
  def input
    input_html_options[:class] = "input-xlarge #{input_html_options[:class]}"
    unless string?
     input_html_classes.unshift("string")
     input_html_options[:type] ||= input_type if html5?
    end
    input_html_options[:pattern] = nil

    add_size!
    @builder.text_field(attribute_name, input_html_options)
  end
end

これはすべてのパターン属性に影響するため、明示的に配置する必要はありません。もちろん、入力タイプがメールかどうかの条件を追加して指定することもできます。

ハッピーコーディング:)

于 2013-09-10T17:57:22.720 に答える