Проверка автозаполнения JQuery в рельсах - PullRequest
0 голосов
/ 26 января 2012

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

Итак, после публикации, код такой:

<input id="post_date" name="post[date]" type="text">

Будет выглядеть так:

<div class="field_with_errors">
   <input id="post_date" name="post[date]" type="text">
</div>

, поэтому с помощью простого CSS мы можем установить красную рамку:

.field_with_errors input{border: 1px red}

Моя проблема началась, когда я поместил поле автозаполнения в форму.Чтобы отправить значение «id» на сервер и показать значение «name» в поле, я создаю скрытое поле для идентификатора, например:

<p>
  <%= f.label :user %>
  <%= f.hidden_field :user_id%>
  <%= text_field_tag :user %>
</p>

Где «text_field_tag» - это мое автозаполнение:

$("input#user").autocomplete({...});

И скрытое поле будет содержать идентификатор для сообщения сервера.

После этого, если в этом поле есть ошибка (как требуется), Rails не окружает ничего из этогомагический элемент div.

Есть какие-нибудь подсказки?Спасибо.

Ответы [ 2 ]

1 голос
/ 26 января 2012

вам нужно будет использовать помощник по формам, чтобы получить подсветку ошибок. так что вам нужно будет f.text_field :user, если вы включили проверку.

0 голосов
/ 26 февраля 2016

Вы можете сделать что-то подобное:

<div class="<%= object.errors[:user].present? ? 'field_with_errors' : '' %>">
 Your text_field_tag with autocomplete
</div>

Пример:

<div class="<%= object.errors[:user].present? ? 'field_with_errors' : '' %>">
  <%= text_field_tag nil, default, :id => 'user_email_autocomplete', data: {autocomplete_source: User.order(:email).map { |t| {:label => t.email, :value => t.id} }} %>
</div>
<%= f.hidden_field :user_id %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...