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

ram*_*mya 2 jquery ruby-on-rails jquery-plugins jquery-autocomplete

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

我的控制器:

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
Run Code Online (Sandbox Code Playgroud)

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

查看代码:

 = form.label :tester_tokens, "Testers" 
 = form.text_field :tester_tokens
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助,

拉姆亚.

mli*_*elt 5

看看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
    
    Run Code Online (Sandbox Code Playgroud)
  • 包含在application.js以下代码中:

    $(function () {
      $('#user_tester_tokens').tokenInput('/testers.json', { 
          crossDomain: false,
          prePopulate: $('#user_tester_tokens').data('pre') })
    }); 
    
    Run Code Online (Sandbox Code Playgroud)
  • 包含在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
    
    Run Code Online (Sandbox Code Playgroud)
  • 在您的视图代码中更改以下行:

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

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