У меня есть регулярное выражение для проверки формата имени.Вы можете видеть это здесь .Это регулярное выражение не соответствует ...
.Но в браузере это каким-то образом разрешено проверкой на стороне клиента, и только при проверке на стороне сервера.
Просмотр
module ApplicationHelper
class ActionView::Helpers::FormBuilder
include ActionView::Helpers::FormTagHelper
include ActionView::Helpers::FormOptionsHelper
def name_field(name, options = {})
validation_options = {
pattern: "^(?!.*\.\S)[a-zA-Z àâäôéèëêïîçùûüÿæœÀÂÄÔÉÈËÊÏΟÇÙÛÜÆŒößÖẞąćęłńóśźżĄĆĘŁŃÓŚŹŻìíòúÌÍÒÚáñÁÑ ',.-]+$",
oninvalid: "setCustomValidity('Contains unsupported characters.')",
oninput: "setCustomValidity('')"
}
text_field name, validation_options.merge(options)
end
end
<%= f.name_field :last_name, class: 'form-control', placeholder: 'Last Name', required: true, maxlength: 50 %>
Проверка модели
NAME_FORMAT = /^(?!.*\.\S)[a-zA-Z àâäôéèëêïîçùûüÿæœÀÂÄÔÉÈËÊÏΟÇÙÛÜÆŒößÖẞąćęłńóśźżĄĆĘŁŃÓŚŹŻìíòúÌÍÒÚáñÁÑ ',.-]+$/
def name_is_acceptable
[:first_name, :last_name].each do |attr|
value = self.send(attr)
next if value.blank? || value =~ NAME_FORMAT
errors.add attr, I18n.t(:resident_name_invalid, scope: 'errors.messages')
end
end