使用带有rails的jquery auto complete插件的示例

如果有人可以帮助我在rails应用程序中实现自动完成function,那将是非常有帮助的。我尝试了jquery auto complete插件。我无法实现。

我的控制器:

def new @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) respond_to do |format| format.html # new.html.erb format.xml { render :xml => @release } end end 

我想为@testers创建一个自动完成

查看代码:

  = form.label :tester_tokens, "Testers" = form.text_field :tester_tokens 

谢谢你的帮助,

拉姆亚。

看看Gem rails3-jquery-autocomplete 。 它应该是您实施的基础。 甚至还有一个示例应用程序 ,解释了您必须采取的每个步骤,以将其包含在您的应用程序中。

在Railscasts.com上,您将找到一个解释如何使用它的剧集: 自动完成关联(修订版)

如果它根本不起作用,你应该回来问具体问题。 根据您的上述问题,您不清楚要使用自动填充的位置。 它通常用于与另一个对象建立(附加)关联,您可以在其中用自动填充字段替换下拉列表或列表中的选择或复选框列表。

还有一种选择,如果您想要选择多个选项,请查看Railscasts剧集“Token Fields” 。 因为你的评论声明这是你想要做的,这里有一些提示如何做(从我的应用程序复制,你必须用你的上下文替换它,它是Railscasts 258的简短版本):

  • 将JQuery Tokeninput安装到您的Rails应用程序中。
  • 确保您的应用程序知道jquery(使用Gem jquery-rails
  • 将Javascript文件jquery.tokeninput.js包含到您的应用程序中(语法取决于您使用的版本)。
  • 在模型中包含以下代码( User ??):

     class User < ActiveRecord::Base attr_accessible :name, :tester_tokens has_many :testers attr_reader :tester_tokens def tester_tokens=(ids) self.tester_ids = ids.split(",") end end 
  • 在您的application.js包含以下代码:

     $(function () { $('#user_tester_tokens').tokenInput('/testers.json', { crossDomain: false, prePopulate: $('#user_tester_tokens').data('pre') }) }); 
  • 在您的TestersController包含以下代码:

     class TestersController < ApplicationController def index @testers = Tester.where("name like ?", "%#{params[:q]}%") respond_to do |format| format.html format.json { render :json => @testers.map(&:attributes) } end end end 
  • 在您的视图代码中更改以下行:

     = form.text_field :tester_tokens, "data-pre" => @user.testers.map(&:attributes).to_json 

您将在Railscasts第258集中找到所有这些步骤的解释以及更多背景知识。