首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 4搜索栏

Rails 4搜索栏
EN

Stack Overflow用户
提问于 2014-10-17 07:05:51
回答 2查看 1.1K关注 0票数 0

我正在我的Rails 4应用程序中创建一个搜索栏。我是我的用户db有‘名称’和‘电子邮件’列的用户的-我希望用户能够搜索其他用户的名字或id。

我现在得到的是:

代码语言:javascript
复制
ActiveRecord::RecordNotFound in UsersController#index
Couldn't find all Users with 'id': (all, {:conditions=>["name LIKE ?", "%hi@example.com%"]}) (found 0 results, but was looking for 2)

有人知道我做错了什么吗?我看过铁路和一些论坛等,但目前还不能通过这一点。

index.html.erb:

代码语言:javascript
复制
<% form_tag users_path, :method => 'get' do %>
  <p>
    <%= text_field_tag :search, params[:search] %>
    <%= submit_tag "Search", :name => nil %>
  </p>
<% end %>

模型/user.rb:

代码语言:javascript
复制
  def self.search(search)
    if search
      find(:all, :conditions => ['name LIKE ?', "%#{search}%"])
    else
      find(:all)
    end
  end

users_controller.rb:

代码语言:javascript
复制
  def index
    @users = User.search(params[:search])
  end

routes.rb:

代码语言:javascript
复制
  get     'search'   =>      'users#index'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-19 07:43:43

您正在使用Rails 4吗?find(:all, ...)是一种旧的方法。现在只找到身份证。使用:

代码语言:javascript
复制
def self.search(search)
  if search.present?
    where('name LIKE ?', "%#{search}%")
  else
    where(true)
  end
end

另外,present?将同时测试零和空白。请记住,根据数据库的不同,LIKE可能会非常慢。

票数 0
EN

Stack Overflow用户

发布于 2014-10-17 08:54:14

在rails中搜索

默认情况下,rails不支持全文搜索,.Activerecord查找器总是使用主键即查找记录。id。因此,我们需要一些其他的宝石或应用,如太阳黑子,elasticsearch等。

我会给你们展示太阳黑子solr在这里..。

在应用程序的gem文件中,只需添加以下代码.。宝石'sunspot_rails‘

代码语言:javascript
复制
group :development do
    gem 'sunspot_solr'
end

在终端中使用捆绑安装rails g sunspot_rails:install

这将添加solr并创建config/sunpot.yml文件。

耙太阳黑子:solr:开始rake太阳黑子:重新索引

编辑模型中的user.rb lile app/model/user.rb

代码语言:javascript
复制
Class User < ActiveRecord::Base
    searchable do
        text :name, :email
    end
end

应用程序/控制器/用户控制器. in

,然后添加索引函数。

代码语言:javascript
复制
def index
    @search = User.search do
        fulltext params[:search]
    end

    @users = search.results
end

创建一个表单以接受用户的输入

代码语言:javascript
复制
<%= label_tag(:search, "Search for:") %>
  <%= text_field_tag(:search) %>
  <%= submit_tag("Search") %>
<% end %>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26419642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档