2011-12-28 101 views
0

我的要求是实现自动完成我的文本框,我已经下载了jQuery自动完成plugin.Please帮助我如何实现它在我的Rails应用程序 。jQuery的自动完成插件,JSON

我的控制器代码:

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**  

感谢, 拉姆亚。

+0

你尝试实现它..! – 2011-12-28 09:20:40

+0

是的Sudhir我试着在我的视图文件中进行以下更改::javascript data = #{@testers.to_json} \t = javascript_include_tag:defaults,:cache => true 并在我的application.js $(document)中。 ({。 $( '#ROOT_NAME')自动完成(数据); \t}函数())准备; 但我没有看到数据通过。 – ramya 2011-12-28 09:32:51

回答

1

当你实现自动完成,没什么2周的方式接近它。

  1. 带来提前的所有数据。
  2. 发送Ajax请求到服务器上的每个“的keydown/KEYUP”或“平变化”

对于第一种方法,有一个名为jsonSuggest 一个非常酷的jQuery插件,它真的很容易实现。 你需要像这样(ID,文本)对的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