0

我的数据库中有一百万条记录。我想用正则表达式实现一个通用搜索框,结果应该出现 50 per page 。我想实现分页

class TweetsController<ApplicationController
  def query
    @tweets =Tweets.where("%query%=?", params[:search]).all
  end
end
<%= form_tag({controller: "tweets", action:"query" }, method: "get") do  %>
<%= label_tag(:search, "search for:") %>
<%= text_field_tag(:search) %>
<%= submit_tag("Search") %>
<% end %>

它实际上是一个全文搜索。.例如,如果我输入“apple”,它应该显示结果开始,结束,也开始在 d 中间,它应该显示表中的所有列。任何人请帮助我。提前Thks。

4

3 回答 3

1

我认为你有 Tweet 模型,因为你的控制器说 TweetsController 。

为 will_paginate 使用分页(https://github.com/mislav/will_paginate

并且在控制器中更改有点像

class TweetsController < ApplicationController
  def query

    @tweets = Tweet.where("field LIKE ?", "%#{params[:search]}%" ).paginate(
      page: params[:page], per_page: 50)
  end
end

在视图中

<%= will_paginate @tweets %>
于 2013-07-05T10:57:46.613 回答
0

您可以使用will_paginate gem。

为此,您首先添加

gem 'will_paginate'

给你的Gemfile,然后你跑bundle。完成后,输入控制器:

class TweetsController < ApplicationController
  def query
    @tweets = Tweets.where("%query%=?", params[:search]).paginate(
      page: params[:page], per_page: 50)
  end
end

在您看来:

<%= will_paginate @tweets %>

显示页面链接。

于 2013-07-05T10:41:48.470 回答
0

另一个不错的选择是使用Kaminari Gem

 def index
   @tweets = Tweet.where("%query%=?",params[:search]).page(params[:page]).per(params[:per])

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

您可以根据需要简单地配置default_per_page。请阅读配置 Kaminari

在视图中只需使用

 <%= paginate @tweets %>
于 2013-07-05T10:50:23.960 回答