2016-12-12 6 views
2

есть поддержка атрибута pattern при использовании form_for?шаблон регулярного выражения с формой для ruby ​​on rails

<%= form_for order_form do |f| %> 
<%= f.label "name" %> 
<%= f.text_field :name, required: true %> 
<%= f.label "Number" %> 
<%= f.telephone_field :phone, pattern: "\\d{10}" %> 
<%= f.submit %> 

Я пытаюсь собрать регулярное выражение, чтобы гарантировать, что телефонные номера в правильном формате. Моя проблема заключается в том, что шаблон атрибут не займет регулярное выражение только строки

<%= f.telephone_field :phone, pattern: /\d{10}/ %> doesnt work 

так, когда я пишу регулярное выражение в виде строки это вызывает проблемы, (например, того, чтобы избежать обратного слэша, например

"\\d{10}" == /\d{10}/ 

я должен просто отказаться используя form_for в этой форме, или есть способ использования form_for и сопоставление с образцом вместе

+1

Вы можете использовать JavaScript для проверки на бланках на переднем конце, или рельсы модели валидаций (а затем и БД проверки) на заднем конце. Это то, что я знаю - возможно, что form_for или html5 имеют свои собственные проверки. – Dbz

+1

Почему «шаблон:» \\ d {10} «проблема? Атрибут ['pattern'] (https://www.w3.org/TR/html5/forms.html#the-pattern-attribute) в HTML содержит текст, который интерпретируется как регулярное выражение JavaScript (а не Ruby). Если набрав '\\ d', на самом деле так много проблем, вместо этого используйте' pattern: '\ d {10}' '. Встраивание одного языка внутри другого всегда немного грязно, тем более, когда вы встраиваете один язык (JavaScript-регулярное выражение) внутри другого (HTML) внутри другого (Ruby) внутри другого (ERB). –

+0

его не об ускорении обратных косых черт, являющемся проблемой или хлопот, я просто пытаюсь убедиться, что использую лучшие практики – ChadTheDev

ответ

0

Я пытался несколько подобных, но я работаю в Rails 5.1.4 Моего кода:

<%= form.telephone_field :telefono, id: :person_telefono, 
:pattern => '\d{10}', :placeholder => "solo numeros"%> 

Попробуйте адаптировать его для своей версии программы и рельсов.

С уважением