2011-12-28 74 views
2

如果有人能够帮我举一个例子来实现我的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 

感谢您的帮助,

拉姆亚。

回答

5

看看宝石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一些背景。

+0

嗨mliebelt非常感谢您的建议。我想用这个文本框来替换复选框的列表,请让我知道如果我可以使用这个自动填充逗号分隔的多个名称 – ramya 2011-12-28 13:53:48