数据始终为空AJAX调用Rails 5

时间:2018-12-11 10:14:53

标签: javascript ruby-on-rails ruby ajax ruby-on-rails-5

我是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搜索)

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

还有我的资产/ javascript文件

$(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范围的啤酒模型

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调用总是呈现一个空数组,那将不胜感激!

Console log

Rails server

1 个答案:

答案 0 :(得分:0)

1)您是否检查过params[:term]实际包含您输入的字符串?例如,通过在控制器中索引方法的开头添加一个binding.pry,并在终端控制台中检查由params[:term]停止代码后binding.pry的值是什么?

2)您的search_beer方法是什么? 您是否尝试过按照以下说明在Beer模型中定义pg搜索范围:https://github.com/Casecommons/pg_search#user-content-pg_search_scope? 然后,您可以使用search_by_name方法(如果您的Beer模型具有name属性),以便Beer.search_by_name(params[:term])返回一组啤酒,其名称与您在params[:term]中的名称匹配< / p>