rails will_paginate不适用于搜索结果

时间:2014-07-14 18:14:55

标签: ruby-on-rails will-paginate advanced-search

我正在关注从railscasts修改的高级搜索表单,我想对搜索结果进行分页,但我不知道将代码放在哪里进行分页。

我有一个模特:

mineralisearch.rb

    class Mineralisearch < ActiveRecord::Base
        attr_accessible :keywords,:keywords1
        def segnalazione_mineralis
        @segnalazione_mineralis ||= find_segnalazione_mineralis
     end
    private
    def find_segnalazione_mineralis
    segnalazione_mineralis = SegnalazioneMinerali.order(:titolo)
    segnalazione_mineralis = segnalazione_mineralis.where("titolo like ?", "%#
                                                  {keywords}%") if keywords.present?

    segnalazione_mineralis  
    end
    end

我有一个控制器 mineralisearches_controller.rb

  class MineralisearchesController < ApplicationController
     def new
     @mineralisearch = Mineralisearch.new
     end

     def create
     @mineralisearch = Mineralisearch.create!(params[:mineralisearch])
     redirect_to @mineralisearch
     end

     def show
     @mineralisearch = Mineralisearch.find(params[:id])

     end
     end

和视图

show.html.erb

 <h1>Risultati della ricerca</h1>
 <table class="table1">
 <tr>
 <th>Titolo:</th><br>
 <th>Creato il:</th>
 <th>Ultima Modifica il:</th>
 <th></th>
 </tr>
<%= render @mineralisearch.segnalazione_mineralis %>
</table>

用这个部分 _segnalazione_minerali.html.erb

<tr>
<td><%= segnalazione_minerali.titolo %>&nbsp;&nbsp;&nbsp;&nbsp;</td>

<td><%= l(segnalazione_minerali.created_at, format:"%e %B %Y %k:%M:%S") %></td>
<td><%= l(segnalazione_minerali.updated_at, format:"%e %B %Y %k:%M:%S")%></td>
<td><%= link_to 'Mostra', [segnalazione_minerali.user, segnalazione_minerali]%></td>
</tr>

我知道我必须加上一些像

这样的代码
 @mineralisearch = Mineralisearch.order("Titolo").page(params[:page]).per_page(10) 
控制器中的

<%= will_paginate @mineralisearch, :previous_label => 'Prec', :next_label => 'Succ' %>
但是我真的不知道在哪里!我试图将它们放在显示视图和控制器中,但它们不起作用!

感谢大家的帮助

1 个答案:

答案 0 :(得分:0)

根据 will_paginate

此代码

@mineralisearch = Mineralisearch.order("Titolo").page(params[:page]).per_page(10) 

应该是这样的

@mineralisearch = Mineralisearch.order("Titolo").paginate(:page => params[:page],:per_page => 10)

你可以拥有这个

<%= will_paginate @mineralisearch, :previous_label => 'Prec', :next_label => 'Succ' %>

show view

not a normal thing pagination目前你想要的是show view。我更倾向于在{{1}上加上分页如果您想要这样,那么您必须将受尊敬的控制器代码段移至index view,并将视图代码段移至index action文件。