0

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

我有一个模型:

矿物搜索.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

和一个视图

显示.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' %>

但我真的不知道在哪里!我试图将它们放在显示视图和控制器中,但它们不起作用!

谢谢大家的帮助

4

1 回答 1

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 thingpagination当前你想要的。show view最好在 . 上进行分页。index view如果你想要这样,那么你必须将受尊敬的控制器代码片段移动到文件中index action,并将视图代码片段移动到index.html.erb文件中。

于 2014-07-15T05:45:01.897 回答