Ruby on Rails:如何实现搜索功能

时间:2018-03-26 06:41:22

标签: ruby-on-rails ruby web

我是Ruby on Rails的新手,实际上,我正试图在我的Ruby on Rails页面中实现搜索功能。它是一个可以将用户添加到数据库的页面,您也可以编辑或删除它们。我的索引页面中列出了所有这些用户,并且在此表格上方有一个搜索功能(嗯,它只是一个文本字段和一个按钮)。

我现在要做的是:我想实现搜索姓氏,房间,密钥,经理等搜索功能。我已经尝试了一些东西,但我终于不知道如何实现搜索功能(我应该写什么,我应该在哪里写呢?我从模型和控制器中听到,但无论如何我不是100 %sure)。如果你能帮我解决这个问题我真的很高兴!

干杯, absolado

4 个答案:

答案 0 :(得分:1)

以下是简单搜索的示例代码。

index.html.erb

<% form_tag projects_path, :method => 'get' do %>
  <p>
    <%= text_field_tag :search, params[:search] %>
    <%= submit_tag "Search", :name => nil %>
  </p>
<% end %>

这里是your_model.rb

def self.search(search)
  if search
    find(:all, :conditions => ['name LIKE ?', "%#{search}%"])
  else
    find(:all)
  end
end

这里是your_controller.rb

def index
  @projects = Project.search(params[:search])
end

答案 1 :(得分:1)

如果您不想自己实现宝石,可以使用宝石。 Ransack是一个非常受欢迎的宝石,它可以支持所有这些功能以及您的视图帮助程序,高级搜索匹配器等等。我建议您在继续执行自己的实现之前先看一下。

答案 2 :(得分:0)

这看起来像是Datatables的工作。我在我的应用程序中使用了很多次。除了在记录中搜索属性外,它还具有可排序的列功能。

答案 3 :(得分:0)

很重要的一点是,Datatable是一个javascript程序包,它使用过滤器,顺序,分页功能构建了一个健壮的表,但是默认情况下它不是在服务器端完成的。

这意味着,如果您有一个大数据集,则可能会遇到麻烦,因为所有记录都将作为一个巨大的json被泵送到客户端的浏览器,而Datatable将为您解析并填写表。

Datatable为服务器端分页,过滤器等提供支持,但随后您必须在后端中实现这些功能。