加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何使用Kaminari(或will_paginate)gem对数组

发布时间:2020-12-17 02:18:25 所属栏目:百科 来源:网络整理
导读:我现在设法找到了解决方法.索引操作现在在调用页面之前有一个“order”子句,然后根据日期对膳食进行排序和分组.接下来的hackey位:@total_pages和@pages在视图中用于提供分页链接,因为内置帮助程序不能与@meals返回的数组哈希一起使用.它工作(种类),但它是ha
我现在设法找到了解决方法.索引操作现在在调用页面之前有一个“order”子句,然后根据日期对膳食进行排序和分组.接下来的hackey位:@total_pages和@pages在视图中用于提供分页链接,因为内置帮助程序不能与@meals返回的数组哈希一起使用.它工作(种类),但它是hackey.将视图内容移动到帮助器中肯定有助于清理它,这是我的下一步.

def index
  @meals = Meal.order('date DESC').page(params[:page]).text_search(params[:query]).sort_by(&:date).reverse.group_by(&:date)
  @total_pages = (Meal.all.size / 7.to_f).ceil
  @pages = (1..@total_pages).to_a 
respond_to do |format|
  format.html # index.html.erb
  format.json { render json: @meals }
end

结束

我真的需要帮助 – 这让我疯了几天.我试图分页数组的哈希.我已经尝试了will_paginate和Kaminari,但是找不到分页结果哈希的方法.

我正在运行Rails 3.2.6,Ruby 1.9.3和PostgreSQL 9.1.3正在进行搜索……

在我的控制器(并使用Kaminari)我有:

def index
  @meals = Meal.text_search(params[:query]).sort_by(&:date).reverse.group_by(&:date).page(params[:page])
respond_to do |format|
  format.html # index.html.erb
  format.json { render json: @meals }
  end
end

在我的模型中,我有以下搜索:

def self.text_search(query)
  if query.present?
    where("description @@ :q or meal_time @@ :q",q: query)
  else
    scoped
  end
end

在我的视图模板中:

<div class="container">
  <div class="row">
<%= form_tag meals_path,method: :get,:class => "well form-search" do %>
  <%= text_field_tag :query,params[:query],:class => "span3" %>
  <%= submit_tag "Search",name: nil,:class => "btn" %>
    <% if current_user %>
      <p class="pull-right"> 
    <%= link_to "Add a meal",new_meal_path,:class => 'btn btn-success' %>
    </p>
    <% else %>
    <% end %>
<% end %>       
</div>
<table class="table table-striped">
<tbody>
  <% @meals.each do |date,meals| %>
  <tr> 
    <td>
      <h2><%= date.to_s(:day_of_month) %></h2>
      <h6><%= date.to_s(:date_and_month) %></h6>
      <p><span class="badge badge-warning"><%= pluralize(meals.size,"meal") %></span></p>
    </td>
    <% meals.each do |meal| %>
      <td>
        <p>
          <strong>
            <%= meal.consumed_at.to_s(:just_the_time)%> 
            <%= meal.meal_time %> &#8212; 
            <%= meal.description %>
          </strong>
        </p>
        <%= link_to "Ingredients",meal_path(meal) %>
      </td>
      <% end %>
    </tr>
  <% end %>
</tbody>
</table> 
</div>
<%= paginate @meals %>

这将返回以下错误:

NoMethodError in MealsController#index

undefined method `page' for Hash

感谢任何帮助!

解决方法

Kaminari.paginate_array(ARRAY_OBJECT).page(params[:page]).per(50)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读