【问题标题】:ruby on rails implement search with auto completeruby on rails 实现自动完成搜索
【发布时间】:2012-06-08 18:06:30
【问题描述】:

我已经实现了一个搜索框,用于搜索我的数据库中的“疾病”表和“症状”表。 现在我想在搜索框中添加自动完成功能。

我创建了一个名为“auto_complete_controller”的新控制器,它返回自动完成数据。 我只是不确定如何结合搜索功能和自动完成功能:我希望搜索控制器中的“索引”操作返回搜索结果,而我的 auto_complete 控制器中的“索引”操作返回 auto_complete 数据.

请指导我如何修复我的 html 语法以及在 js.coffee 文件中写入的内容。 我正在使用带有 jquery UI 的 rails 3.x 来自动完成,我更喜欢服务器端解决方案,这是我当前的代码:

main_page/index.html.erb:

<p>
    <b>Syptoms / Illnesses</b>
    <%= form_tag search_path, :method => 'get' do %>
      <p>
        <%= text_field_tag :search, params[:search] %> <br/>

        <%= submit_tag "Search", :name => nil %>
      </p>
  <% end %>
</p>

auto_complete_controller.rb:

class AutoCompleteController < ApplicationController

    def index
    @results = Illness.order(:name).where("name like ?", "%#{params[:term]}%") + Symptom.order(:name).where("name like ?", "%#{params[:term]}%")

    render json: @results.map(&:name)
  end
end

search_controller.rb:

class SearchController < ApplicationController

def index
    @results = Illness.search(params[:search]) + Symptom.search(params[:search])

    respond_to do |format|
        format.html # index.html.erb
        format.json { render json: @results }
    end
 end
end

谢谢你,李

【问题讨论】:

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


    【解决方案1】:

    这是在 Twitter-Bootstrap 中进行动态预输入的方法;我敢肯定这对于 jQuery 来说是类似的:

    https://gist.github.com/1848558

    本质上,通过侦听非导航击键,它会触发对控制器的 AJAX 部分文本搜索。然后,此返回数据填充要显示的 JS 框架的预输入/自动完成数据。这意味着您实际上只需要一个 SearchController。

    【讨论】:

      【解决方案2】:

      试试rails3-jquery-autocomplete。我正在使用它,并且有与您相同的要求,并且它们可以很好地协同工作。如果您需要进一步的帮助,请告诉我。

      【讨论】:

        【解决方案3】:

        我遇到了同样的问题,不得不为它创建这个 gem:https://github.com/rayasocialmedia/rails_autocomplete

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-02-17
          • 2015-06-29
          • 2018-09-04
          • 2017-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多