0

我试图让 JQueryUI 自动完成功能在一个简单的文本框中工作,但我在浏览器中没有看到任何响应。我怀疑我没有完全连接好东西。我也想尽可能地把它做成“Rails 3”。在控制器中(品牌是模型,派生自 ActiveRecord::Base,带有字段“名称”):

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

显示.html.erb:

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

显示.js.erb:

<%= raw @names %>

在 application.js 中:

$(function() {

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

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

4

1 回答 1

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 错误。

于 2012-09-21T15:50:38.500 回答