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

ruby-on-rails-4 – 如何在rails中使用带有ransack的will_pagina

发布时间:2020-12-17 01:35:49 所属栏目:百科 来源:网络整理
导读:我正在使用ransack进行搜索,现在我想在我的rails应用程序中实现分页.所以我使用的是will_paginate gem.我面临的问题是,我无法弄清楚如何将paginate放在我当前的控制器代码中,因为它已根据查询获取结果. 这是我的控制器代码 def searchif params[:search].pre
我正在使用ransack进行搜索,现在我想在我的rails应用程序中实现分页.所以我使用的是will_paginate gem.我面临的问题是,我无法弄清楚如何将paginate放在我当前的控制器代码中,因为它已根据查询获取结果.

这是我的控制器代码

def search
if params[:search].present? && params[:search].strip != ""
  session[:loc_search] = params[:search]
end
arrResult = Array.new
if session[:loc_search] && session[:loc_search] != ""
  @rooms_address = Room.where(active: true).near(session[:loc_search],5,order: 'distance')
else
  @rooms_address = Room.where(active: true).all
end

@search = @rooms_address.ransack(params[:q])
@rooms = @search.result

@arrRooms = @rooms.to_a

有人能告诉我如何在这里加分吗?

用日志更新

18:29:40 web.1    |   Room Load (0.8ms)  SELECT  rooms.*,3958.755864232 * 2 * ASIN(SQRT(POWER(SIN((12.9715987 - rooms.latitude) * PI() / 180 / 2),2) + COS(12.9715987 * PI() / 180) * COS(rooms.latitude * PI() / 180) * POWER(SIN((77.5945627 - rooms.longitude) * PI() / 180 / 2),2))) AS distance,MOD(CAST((ATAN2( ((rooms.longitude - 77.5945627) / 57.2957795),((rooms.latitude - 12.9715987) / 57.2957795)) * 57.2957795) + 360 AS decimal),360) AS bearing FROM "rooms" WHERE "rooms"."active" = $1 AND (rooms.latitude BETWEEN 12.754501025333727 AND 13.188696374666272 AND rooms.longitude BETWEEN 77.37177993269385 AND 77.81734546730614 AND (3958.755864232 * 2 * ASIN(SQRT(POWER(SIN((12.9715987 - rooms.latitude) * PI() / 180 / 2),2)))) BETWEEN 0.0 AND 15)  ORDER BY distance LIMIT 5 OFFSET 5  [["active","t"]]
18:29:40 web.1    |    (0.3ms)  SELECT COUNT(*) FROM "rooms" WHERE "rooms"."active" = $1 AND (rooms.latitude BETWEEN 12.754501025333727 AND 13.188696374666272 AND rooms.longitude BETWEEN 77.37177993269385 AND 77.81734546730614 AND (3958.755864232 * 2 * ASIN(SQRT(POWER(SIN((12.9715987 - rooms.latitude) * PI() / 180 / 2),2)))) BETWEEN 0.0 AND 15)  [["active","t"]]

解决方法

您对搜索结果进行了分页,因此在搜索后. 像@rooms = @ search.result.paginate(页面:params [:page],per_page:params [:per_page])之类的东西应该可行.

(编辑:李大同)

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

    推荐文章
      热点阅读