2012-09-21 124 views
0

我想让JQueryUI自动完成在一个简单的文本框中工作,并且我在浏览器中看不到响应。我怀疑我没有完全连接起来。我也想尽可能地做到“Rails 3”。 在控制器(品牌为模型,从ActiveRecord的::碱衍生,具有字段 '名称'):从Rails获取AJAX请求以激活

class WelcomeController < ApplicationController 
    def show 
    @names = Brand.all.map(&:name) 
    respond_to do |format| 
     format.html 
     format.js 
    end 
    end 
end 

show.html.erb:

<h1>Welcome</h1> 
<%= form_tag :method => :get do %> 
<%= text_field_tag :name %> 
<% end %> 

show.js.erb:

<%= raw @names %> 

在application.js中:

$(function() { 

    $('brand_name').autocomplete({ 
    source: '/brands/new.js' 
    }); 
}); 

我在做错了什么,在获取将由我设置的Javascript处理的AJAX请求方面?

回答

0

首先,确保从服务器返回的是真正的JSON数组。这是jQuery UI自动完成所必需的。尝试渲染JSON而不是Javascript:

respond_to do |format| 
    format.html 
    format.json { render :json => @names } 
end 

然后给你的文本字段一个合适的类或id。否则,我不知道你想如何匹配元素与jQuery。

<%= text_field_tag 'brand_name', nil, :class => 'brand_name' %> 

最后,更正javascript。

$(function() { 
    $('.brand_name').autocomplete({ 
    source: '/brands/new.json' 
    }); 
}); 

如果出现另一个问题,使用WebKit检查,如果你从服务器和其控制台是否有JavaScript错误接收正确的数据来结帐。

+0

戴夫,非常感谢!这指出了我在正确的方向,并在这种情况下得到了它的工作。我现在有问题进入第二个应用程序,但至少这个工作。 – sploiber