Rails,JSON对象,jQuery,自动完成

时间:2010-06-01 22:48:55

标签: jquery ruby-on-rails json jquery-plugins autocomplete

我正在使用这个jquery autocomplete插件和rails:http://docs.jquery.com/Plugins/Autocomplete

我无法弄清楚如何在我的Rails控制器和我的javascript文件中格式化我的结果。

我的控制器中有这样的东西......

@query = params[:q].downcase
@json = User.all(:login => /^#{@query}/)
respond_to do |format|
  format.js  { render :json => @json.to_json(:only => "login"), :layout => false }  
end

然后在我的script.js文件中......

    $("#form").autocomplete('/url', {
    width: 320,
    dataType: 'json',
    highlight: false,
    scroll: true,
    scrollHeight: 300
    })

但我无法弄清楚如何解析数据,所以我的自动完成功能只会立即得到我所有结果的原始数组。

如何在script.js文件和/或控制器中处理JSON以使其正常工作?

2 个答案:

答案 0 :(得分:0)

根据该插件的documentation,没有dataType选项。您可能还将插件的一个分叉中的配置选项与另一个分支的源混合。

您是否尝试过从服务器获取的建议数据的默认值(管道分隔,如果我的内存正确供给我)格式?

BTW,我确实找到了这个fork here,它为自动完成插件添加了JSON支持。

答案 1 :(得分:0)

我实际上在Demo中发现了一个JSON示例。它看起来像这样:

    function format(user) {
        return user.login + " (" + user.name + ")";
    }
    $("#login").autocomplete('/url', {
        multiple: false,
        delay: 100,
        dataType: "json",
        parse: function(data) {
            return $.map(data, function(row) {
                return {
                    data: row,
                    value: row.login,
                    result: row.login
                }
            });
        },
        formatItem: function(item) {
            return format(item);
        }
    }).result(function(e, item) {
        $("#content").append("<p>selected " + format(item) + "</p>");
    });
});