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

时间:2011-12-28 13:08:08

标签: jquery ruby-on-rails jquery-plugins jquery-autocomplete

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

我的控制器:

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

感谢您的帮助,

拉​​姆亚。

1 个答案:

答案 0 :(得分:5)

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

在Railscasts.com上,您会找到一个解释如何使用它的剧集:Autocomplete-association (revised)

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

如果您想要选择多个项目,可以选择Railscasts episode "Token Fields"。因为你的评论声明这是你想要做的,这里有一些提示如何做(从我的应用程序复制,你必须用你的上下文替换它,它是Railscasts 258的简短版本):< / p>

  • 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 episode 258的更多背景信息。