魔术建议返回POST 404错误

时间:2014-07-01 12:44:52

标签: ruby-on-rails-4 autocomplete ruby-on-rails-3.2 magicsuggest

我正在尝试使用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:...},{...}]

3 个答案:

答案 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请求的怀疑是正确的。

我的朋友帮忙了,这就是为什么我能解决这个问题。

这就是我所做的..

  1. 取消了FoodSearch Controller,因为根本不需要。

  2. 在我的食物控制器中创建了一个搜索操作,如下所示:

    def搜索   渲染json:['cocain','crack','gorilla testosterone'] 端

  3. 编辑我的路由到POST请求而不是get *这是关键:

    资源:食物   收集做     发布:搜索   结束 结束

  4. ---正如karlipoppins建议的那样,另一个选择就是通过包含方法属性来简单地改变magicSuggest所做出的请求类型:

            input.magicSuggest({
               method: 'get',
               data: "/foods/search/",
               placeholder: "Search Foods...",
               valueField:'idFood',
               displayField:'foodName'
            }); 
    

    然后我不需要改变发布路线。

    1. 将此路径添加到js

      中的data属性

      数据:“/ foods / search /”

    2. 对于任何试图让magicSuggest在rails中工作的人来说,这将是一个巨大的帮助。说实话,这是一个非常简单的设置。那一点和JSON格式是唯一让我在这里绊倒的东西。