如果有人可以帮助我提供一个在我的 Rails 应用程序中实现自动完成功能的示例,那将会有很大的帮助。我尝试了 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
感谢您的帮助,
Ramya.
看看宝石Rails3-jquery-自动完成。它应该是您实施的基础。甚至还有一个示例应用程序这解释了您必须采取的每个步骤,以将其包含在您的申请中。
在 Railscasts.com,您会找到一集解释如何使用它:自动完成关联(修订版)
如果它对您根本不起作用,您应该回来询问具体问题。从您上面的问题来看,尚不清楚您想在哪里使用自动完成功能。它通常用于建立与另一个对象的(附加)关联,您希望用自动完成字段替换下拉列表或列表中的选择或复选框列表。
还有一种选择,如果您想选择多个项目,请查看Railscasts 剧集“Token Fields”。因为您的评论表明这就是您想要做的,所以这里有一些如何做到这一点的提示(从我的应用程序复制,您必须用您的上下文替换它,它是一个简短版本铁路广播 258):
- Install JQuery 令牌输入到您的 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
您可以在以下位置找到所有这些步骤的说明以及更多背景信息:铁路广播 第 258 集.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)