我正在尝试使用Magic Suggest在我的rails应用程序中运行自动完成功能。
我认为这是正确的问题:如何让MagicSuggest获取我提供的URL的JSON?
这是我输入字母时控制台返回的错误:
POST http://localhost:3000/search_foods 404 (Not Found) jquery.js:8706
Uncaught Could not reach server
这是神奇的建议代码:
input.magicSuggest({
data: "/foods/search/",
placeholder: "Search Foods...",
valueField:'idFood',
displayField:'foodName'
});
路线
resources :search_foods
控制器与行动
class SearchFoodsController < ApplicationController
def index
render json: %['Crack', 'Cocain', 'Gorilla Test', 'Horse Test']
end
end
当我直接访问/ search_foods网址时,我得到了
'Crack', 'Cocain', 'Gorilla Test', 'Horse Test'
正如我的代码所做的那样。
我认为问题在于MagicSuggest默认发送POST请求,但我不确定这是否完全相关:
You can pass the url from which the component will fetch its JSON data.Data will be fetched
* using a POST ajax request that will * include the entered text as 'query' parameter. The results
* fetched from the server can be:
* - an array of JSON objects (ex: [{id:...,name:...},{...}])
* - a string containing an array of JSON objects ready to be parsed (ex: "[{id:...,name:...},{...}]")
* - a JSON object whose data will be contained in the results property
* (ex: {results: [{id:...,name:...},{...}]
答案 0 :(得分:1)
试试这个:
input.magicSuggest({
data: "http://localhost:3000/search_foods",
placeholder: "Search Foods...",
valueField:'idFood',
displayField:'foodName'
});
答案 1 :(得分:0)
该文档指出该组件需要以下之一:
* - an array of JSON objects (ex: [{id:...,name:...},{...}])
* - a string containing an array of JSON objects ready to be parsed (ex: "[{id:...,name:...},{...}]")
* - a JSON object whose data will be contained in the results property
* (ex: {results: [{id:...,name:...},{...}]
当您访问/search_foods
时,您将获得
'Crack', 'Cocain', 'Gorilla Test', 'Horse Test'
这不适合任何支持的3个案例。
答案 2 :(得分:0)
我对POST请求的怀疑是正确的。
我的朋友帮忙了,这就是为什么我能解决这个问题。
这就是我所做的..
取消了FoodSearch Controller,因为根本不需要。
在我的食物控制器中创建了一个搜索操作,如下所示:
def搜索 渲染json:['cocain','crack','gorilla testosterone'] 端
编辑我的路由到POST请求而不是get *这是关键:
资源:食物 收集做 发布:搜索 结束 结束---正如karlipoppins建议的那样,另一个选择就是通过包含方法属性来简单地改变magicSuggest所做出的请求类型:
input.magicSuggest({
method: 'get',
data: "/foods/search/",
placeholder: "Search Foods...",
valueField:'idFood',
displayField:'foodName'
});
然后我不需要改变发布路线。
将此路径添加到js
中的data属性数据:“/ foods / search /”
对于任何试图让magicSuggest在rails中工作的人来说,这将是一个巨大的帮助。说实话,这是一个非常简单的设置。那一点和JSON格式是唯一让我在这里绊倒的东西。