使用jQuery自动完成插件与轨道的例子
问题描述:
如果有人能够帮我举一个例子来实现我的rails应用程序中的自动完成功能,那将会非常有帮助。我尝试了jquery自动完成插件。我无法实现。使用jQuery自动完成插件与轨道的例子
我的控制器:
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
感谢您的帮助,
拉姆亚。
答
看看宝石rails3-jquery-autocomplete。它应该是您实施的基础。甚至有一个example application解释了你必须采取的每一步,以将其包含在你的应用程序中。
在Railscasts.com,你会发现,解释了如何使用它的一个小插曲:Autocomplete-association (revised)
如果它不是为你工作,你应该回来,问具体问题。从上面的问题来看,你不清楚你想使用自动完成的位置。它通常用于建立到另一个对象的(附加)关联,您想在其中用自动填充字段替换下拉列表或选择列表或复选框列表。
还有一种方法,如果您想要选择多个事物,请查看Railscasts episode "Token Fields"。因为您的评论指出,这是你想做的事,这里有一些提示如何做到这一点(从我的应用程序复制的,你有你的背景来取代它,它是Railscasts 258短版):
- 将JQuery Tokeninput安装到您的Rails应用程序中。
- 确保您的应用程序知道的jQuery(通过使用宝石
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 episode 258一些背景。
嗨mliebelt非常感谢您的建议。我想用这个文本框来替换复选框的列表,请让我知道如果我可以使用这个自动填充逗号分隔的多个名称 – ramya 2011-12-28 13:53:48