【发布时间】:2016-07-25 02:13:51
【问题描述】:
我正在学习如何使用 ransack,所以我有一个问题,我不确定是因为 ransack 还是因为数组。
我有一个包含 2 个文本字段(:search 和 :discipline)的表单。所以我尝试使用 1º 字段参数AND 2º 字段参数进行搜索。
想法是搜索所有来自1º参数(字段:search)的元素,然后删除所有不同于2º参数(字段:discipline)的元素。
class PagesController < ApplicationController
def home
@rooms = Room.limit(6)
end
def search
if params[:search].present? && params[:search].strip != ""
session[:loc_search] = params[:search]
end
if params[:discipline].present? && params[:discipline].strip != ""
session[:loc_discipline] = params[:discipline]
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
if (session[:loc_discipline] && !session[:loc_discipline].empty?)
@rooms.each do |room|
not_available = Room.where(
"(room_type != ?)",
session[:loc_discipline]
)
if not_available.length > 0
@arrRooms.delete(room)
end
end
end
end
end
我的@arrRooms 在我尝试这样做@arrRooms.delete(room) 后返回NULL。
我不知道是否有更好的方法来做到这一点,但我正在尝试像我找到的教程那样做。
【问题讨论】:
标签: ruby-on-rails arrays sqlite ransack