Использование списка данных в форме Ruby в Rails для отображения имени, но передачи параметра id - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть форма, где пользователи могут добавить товар на свой товар. Я хотел бы использовать форму данных. Мой код такой:

  <div class="form-group">
    <%= form.label :item_id %>
    <%= form.text_field :item_id, list: 'item_id' %>
    <datalist id="item_id">
      <%= options_for_select(current_user.items.map { | item | [item.name, item.id] }) %>
    </datalist>
  </div>

Но когда пользователь вводит свой поиск и нажимает на автозаполненное имя (например, «Apple»), форма отображает идентификатор элемента (например, «7»). ). Мне бы хотелось, чтобы вместо изменения идентификатора в форме отображалось только имя. Как мне этого добиться?

1 Ответ

0 голосов
/ 11 февраля 2020

Это не очень хорошая идея - вообще. В отличие от выбора, текстовый ввод не является меткой / значением. То, что вы видите, это то, что вы получаете.

Итак, пока вы можете сделать:

<datalist id="item_id">
  <% current_user.items.each do |i| >
  <option><%= i.name %></option>
  <% end %>
</datalist>

, который заполнит ввод item_id именем. Но вы потеряете идентификатор на пути. Это означает, что вам нужно либо искать элемент по имени, либо использовать какую-то хитрость javascript для хомяка этого идентификатора и замены входного значения до того, как пользователь отправит его.

В этот момент вы могли бы на самом деле создайте AJAX автозаполнение с таким же усилием, которое меньше хакерской путаницы.

...