Данные всегда пустые, AJAX вызывает Rails 5 - PullRequest
0 голосов
/ 11 декабря 2018

Я новичок в RAILS и даже больше в AJAX-вызовах.

У меня есть панель поиска, где я хочу выполнить автозаполнение, чтобы помочь пользователям найти элементы, присутствующие в БД.На данный момент я только пытаюсь отобразить данные вызова AJAX внутри консоли, но что бы я ни делал, оно всегда пусто ...

Я использую Rails 5.2.1

Моя форма:

<%= form_tag autocomplete_index_path,remote: true,  method: :get do %>
 <%= text_field_tag 'term', params[:term], class:"my_form"%>
  <%= submit_tag "bouton", class: "my_button" %>
<% end %>

Мой контроллер (с помощью pg search):

class AutocompleteController < ApplicationController
  def index
    respond_to do |format|
     format.json { render json: { data: Beer.search_beer(params[:term]).limit(5)}  } 
    end
  end
end

И файл моих активов / javascripts

$(document).ready(function(){

    $(".my_form").keyup(function(){
        var search = $(this).val();

        if(search != ""){

            $.ajax({
                url: 'autocomplete',
                method: 'GET',
                dataType: 'json',
                data: {'name': $("#term").val()},
                success:function(data){
                 console.log('Success!', data);
                }
                });
        }

    });

});

Модель пива с pg scope

class Beer < ApplicationRecord
  include PgSearch
  belongs_to :brewery
  belongs_to :category
  belongs_to :style
  has_many :bars, through: :beer_lists
  pg_search_scope :search_beer, 
    against: :name, 
    using: {
      tsearch: {
        prefix: true
      }
    }
end

Если кто-то может помочь мне выяснить, почему Ajax-вызов всегда рендерит пустой массив, он был бы очень признателен!

Журнал консоли

Сервер Rails

1 Ответ

0 голосов
/ 11 декабря 2018

1) Вы проверили, действительно ли params[:term] содержит введенную вами строку?Например, добавив binding.pry в начале вашего индексного метода в вашем контроллере и проверив в терминальной консоли значение params[:term], когда код останавливается binding.pry?

2) Чтотвой search_beer метод?Вы пытались определить область поиска pg в своей модели пива, как описано здесь: https://github.com/Casecommons/pg_search#user-content-pg_search_scope?Тогда у вас может быть метод search_by_name (если ваша модель пива имеет атрибут name), чтобы Beer.search_by_name(params[:term]) возвращал массив пива, чье имя совпадает с тем, что вы имеете в params[:term]

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