【问题标题】:example for using jquery auto complete plugin with rails使用带有 rails 的 jquery 自动完成插件的示例
【发布时间】:2011-12-28 13:08:07
【问题描述】:

如果有人可以帮助我举个例子在我的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

感谢您的帮助,

拉米亚。

【问题讨论】:

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


    【解决方案1】:

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

    在 Railscasts.com,你会发现一集解释了如何使用它:Autocomplete-association (revised)

    如果它对您根本不起作用,您应该回来提出具体问题。从您的上述问题中,尚不清楚您要在哪里使用自动完成功能。它通常用于建立与另一个对象的(附加)关联,您希望通过自动完成字段替换下拉列表或列表中的选择或复选框列表。

    还有另一种选择,如果您想选择多个事物,请查看Railscasts episode "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
      
    • 在您的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 非常感谢您的建议。我想用这个文本框来替换复选框列表,也请告诉我是否可以用它来自动完成许多用逗号分隔的名称
    猜你喜欢
    • 2011-08-20
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 2010-10-29
    相关资源
    最近更新 更多