Rails 5.1 - Как мне установить «novalidate» для Bootstrap 4 Custom Form Validation? - PullRequest
0 голосов
/ 15 мая 2018

Это моя первая попытка создания форм в Bootstrap 4 с использованием его собственной проверки.

Когда я выполняю этот код, появляются сообщения об ошибках по умолчанию, так как я не установил значение novalidate.

<%= form_tag contact_path, class: "needs-validation", method: 'get' do %>
    <div class="row">
        <div class="form-group col-12 col-sm-12 col-md-4 col-lg-4 col-xl-4">
          <%= label_tag "#{t :label_name}" %><%= text_field_tag :name, params[:name], class: "form-control", :minlength => 2, :maxlength => 40, placeholder: "#{t :contact_placeholder_name}", required: "required" %>
          <div class="invalid-feedback"><%= "#{t :label_name} #{t :contact_error_required}" %></div>
        </div>
        <div class="form-group col-12 col-sm-12 col-md-4 col-lg-4 col-xl-4">
          <%= label_tag "#{t :label_email_address}" %><%= email_field_tag :email, params[:email], class: "form-control", :minlength => 15, :maxlength => 70, placeholder: "#{t :contact_placeholder_email}", required: "required" %>
          <div class="invalid-feedback"><%= "#{t :label_email_address} #{t :contact_error_required}" %></div>
        </div>
        <%= submit_tag "#{t :contact_submit}" %>
    </div>
<% end %>

У меня есть следующие безуспешно. Последний произвел ту же разметку, что и предыдущий.

<%= form_tag contact_path, class: "needs-validation novalidate", method: 'get' do %> - questioned if this would work since it's not identified as a class in the Bootstrap documentation.

<%= form_tag contact_path, class: "needs-validation", :novalidate, method: 'get' do %> *** error ***

<%= form_tag contact_path, class: "needs-validation", novalidate: "novalidate", method: 'get' do %>

<%= form_tag contact_path, class: "needs-validation", novalidate: true, method: 'get' do %>

Как мне воспроизвести следующую разметку в Rails, чтобы мои собственные сообщения об ошибках появлялись? Я ничего не видел о том, как объявить novalidate в Rails где-либо в сети.

<form class="needs-validation" novalidate>

Ответы [ 2 ]

0 голосов
/ 06 июня 2019

Я не уверен, что на ваш вопрос ответили, но я столкнулся с той же проблемой и смог ее решить, используя html-хэш в моем теге form_with.

<%= form_with model: @user, html: { class: "needs-validation", novalidate: true } do |f| %>
0 голосов
/ 16 мая 2018

Вам понадобится что-то вроде:

<%= form_tag contact_path, { class: "needs-validation novalidate", method: :get } do %>

Сигнатура метода ожидает два аргумента, оба могут быть хешами, ваши текущие попытки выбрасывают все аргументы в первый хеш.

form_with - это новое значение, поэтому вы можете перейти на него.

...