jquery auto complete插件,json

时间:2011-12-28 09:17:37

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

我的要求是使用我的rails应用程序在我的文本框中实现自动完成 我已经下载了jquery auto complete插件。请帮我解决一下如何实现它。

我的控制器代码:

 def new
@release = Release.new
@ic_ids = params[:ic_ids] ? params[:ic_ids] : []
**@testers = User.find_by_sql("select * from users where id in(select user_id from user_role_assignments where role_id in (select id from roles where name like 'Tester')) order by name").paginate(:page=>params[:page],:per_page=>30)**   
 if params[:project_id]
  @release.project = Project.find(params[:project_id])
end
respond_to do |format|
  format.html # new.html.erb
  format.xml  { render :xml => @release }
end
end

我想为 @testers

创建自动完成功能

我的观看代码:

 %td.grid.full_panels
    -table_panel "Assign Testers" do
      %table
        %th Name
        -puts "testers=#{@testers}"
        = form.label :tester_tokens, "Testers" 
        **= form.text_field :tester_tokens**    

谢谢, 拉姆亚。

1 个答案:

答案 0 :(得分:1)

当你实现自动完成时,有两种方法可以实现它。

  1. 提前提供所有数据。
  2. 在每个“keydown / keyup”或“onchange”上向服务器发送ajax请求
  3. 对于第一种方法,有一个非常酷的jquery插件叫jsonSuggest 而且它很容易实现。 你需要一个(id,text)对中的json对象:

    var myData = [{ id : "someId" , text : "someText"} , ... ]

    然后调用以下代码:

    $("#myInput").jsonSuggest({ data : myData , onSelect: function(item){ /* callback code */} })

    这甚至可以适用于数千个物体。它将为多个ajax调用服务器提供更好的性能。 如果您更喜欢使用jquery-ui插件,请查看the default example

    另一种方法(多个ajax请求)非常相似,但我不认为jsonsuggest支持它。它由jquery-ui插件支持。 对于这种情况,您应该查看the remote example