【发布时间】:2018-12-11 10:14:52
【问题描述】:
我是 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
还有我的资产/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 范围的啤酒模型
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 调用总是呈现一个空数组,那将不胜感激!
【问题讨论】:
-
您的 ajax 请求是否成功发送到您的控制器?请您先检查一下,然后添加您的 ajax 调用的终端日志
-
是的,它已成功连接,因为我可以看到搜索是在 rails 控制台中执行的,但文本参数为空。我添加了浏览器和 Rails 控制台日志
-
尝试添加终端日志(rails 服务器)而不是浏览器日志。
-
这是因为你的
params[:term]是空的所以没有结果。
标签: javascript ruby-on-rails ruby ajax ruby-on-rails-5