Автозаполнение нескольких полей с помощью jquery в Rails 5 - PullRequest
0 голосов
/ 17 сентября 2018

Я создаю форму администратора, где использую виджет автозаполнения Jquery для одного из текстовых полей.

В поле с именем customer_phone_number , когда кто-то набирает номер телефона, автозаполнение проверяет базу данных, чтобы узнать, существует ли она, и перечисляет существующие опции. После того, как номер телефона выбран, я хочу, чтобы он заполнил еще одно поле с именем customer_name . Мне удалось автозаполнение первого, но не другого. Вот как выглядит мой код прямо сейчас:

Это вид:

<div class="col-md-4 input">
  <div class="form-group">
    <label>Customer's Phone Number</label>
    <%= f.text_field :customer_phone_number, class: "form-control", data: { autocomplete_source: customers_path }  %>
  </div>
</div>
<div class="col-md-4 input">
  <div class="form-group">
    <label>Customer's Name</label>
    <%= f.text_field :customer_name, class: "form-control", data: { autocomplete_source: customers_path }  %>
  </div>
</div>

Файл JavaScript:

jQuery(function() {

  return $('#customer_phone_number').autocomplete({
    source: $('#customer_phone_number').data('autocomplete-source'),
    select: function(event, ui) {
      event.preventDefault(),
      $(this).val(ui.item.phone_number),
      $('#customer_name').val(ui.item.name);
    }
  });
});

и контроллер:

  def index
    @customer = Customer.order(:phone_number).where("phone_number like ?", "%#{params[:term]}%").limit(5)
    render json: @customer.map{ |customer| { :phone_number => customer.phone_number, :name => customer.name } }
    # render json: @customer.pluck(:phone_number, :name)

  end

Как передать значение : name в поле customer_name ?

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Мне удалось заставить его работать, используя другой метод с гемом rails-jquery-autocomplete:

https://github.com/risuiowa/rails-jquery-autocomplete/

Использование

autocomplete_field

оказалось гораздо проще реализовать. Пример:

form_for @product do |f|
  f.autocomplete_field :brand_name, autocomplete_brand_name_products_path
end
0 голосов
/ 18 сентября 2018

Возможно, вы выбираете неправильный запрос, так как в имени поля формы customer_phone_number и в запросе его phone_number

Если в Customer имя поля модели указано customer_phone_number, тогда запрос должен быть

def index
    @customer = Customer.order(:customer_phone_number).where("customer_phone_number like ?", "%#{params[:term]}%").limit(5)
    render json: @customer.map{ |customer| { :phone_number => customer.customer_phone_number, :name => customer.name } }

end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...