从Rails获取AJAX请求以激活

时间:2012-09-21 15:13:13

标签: javascript ruby-on-rails-3

我试图让JQueryUI自动完成工作在一个简单的文本框中,我在浏览器中看不到任何响应。我怀疑我没有完全连线的东西。我也想尽可能做“Rails 3”。 在控制器中(Brand是模型,派生自ActiveRecord :: Base,字段'name'):

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请求方面,我做错了什么?

1 个答案:

答案 0 :(得分: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错误。