正确设置will_paginate的分页

时间:2014-04-29 21:45:42

标签: ruby-on-rails twitter-bootstrap will-paginate

我一直在尝试正确设置分页,但是我无法遵循任何教程并让它正常工作。

我基本上想要设置的是,当用户选择他们想要在页面上显示的公司数量时,以下循环将每页上给定数量的公司分页。如果用户没有选择特定数量的公司/页面,则会设置默认值。

如果有人能够推动我朝着正确的方向前进,那将非常感激。

查看

<ul class="list-group">
<%= @comps.find_each do |comp| %>
<li class="list-group-item">
<div class="row">
    <div class="span12">
        <p style="font-size: 1.5em"><strong><%= link_to comp.name, comp %></strong></p>
        <hr class="divider">
        <div class="row">
            <div class="span6">
                <p><strong>Primary Field:</strong> <%= comp.primary_field %></p>
                <p><strong>Description:</strong> <%= truncate(comp.description, length: 150) { link_to "Read More", comp, :target => "_blank"}%>
                </p>
            </div>
            <div class="span5">
                <% if signed_in? %>
                    <p><% if !(current_user.favorites.include? comp) %>
                            <%= link_to 'Favorite', 
                            favorite_company_path(comp, type: "favorite"), 
                            class: "btn btn-primary", 
                            method: :put%>

                    <% else %>
                            <%= link_to 'Unfavorite',
                            favorite_company_path(comp, type: "unfavorite"),
                            class: "btn btn-danger",
                            method: :put%>
                    <% end %></p>
                <% end %>
                <p><strong>Website:</strong> <%= auto_link(comp.website, :html => { :target => '_blank' })%></p>
                <p><strong>Location:</strong> <%= comp.address %></p>
            </div>
        </div>
    </div>
</div>
</li>
<% end %>
<%= will_paginate @comps%>
</ul>

控制器(处理列表页面的地方)

  def filter
    if ((params[:field] != "") and (params[:field] != "All Fields") and (params[:field] != nil))
      # This will apply the filter
      @comps = Company.where(primary_field: params[:field])
    else
      # This will return all records 
      @comps = Company.all
    end
  end

  def list
    @fields = @@primary_field
    filter
    @comps = @comps.paginate(:page => params[:page], :per_page => params[:number_of_companies] ||= 5)
  end
列表页

模型

class DynamicPages < ActiveRecord::Base

    self.per_page = 5

end

1 个答案:

答案 0 :(得分:0)

因为你使用的是will_paginate。你可以这样做。

Post.paginate(:page => params[:page], :per_page => params[:number_of_companies] ||= 10)

这里params [:number_of_companies]是用户选择的公司数量,10是

默认页面值。

课程帖子

self.per_page = 10

此外,您的代码段&lt;%= @ comps.find_each do | comp | %&gt ;,应为此&lt; %%&gt;而不是&lt;%=%&gt;