gpt4 book ai didi

ruby-on-rails - 如何使用 Kaminari(或 will_paginate)gem 对数组散列进行分页

转载 作者:行者123 更新时间:2023-12-03 16:29:48 25 4
gpt4 key购买 nike

我现在设法找到了解决方法。 index 操作现在在调用 page 之前有一个“order”子句,然后按日期对膳食进行排序和分组。接下来的 hackey 位:@total_pages 和 @pages 在 View 中用于提供分页链接,因为内置的帮助器不适用于 @meals 返回的数组散列。它工作(有点)但它是hackey。将 View 内容移动到助手中肯定会有助于清理它,这是我的下一步。

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 正在做搜索......

在我的 Controller (并使用 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

在我的 View 模板中:
<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)

关于ruby-on-rails - 如何使用 Kaminari(或 will_paginate)gem 对数组散列进行分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11551522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com