나는 랭락을 사용하는 법을 배우므로 거기에 문제가 생길 수 있습니다. 그 이유는 랭락이거나 배열이기 때문입니다.레일 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
NULL을 시도한 후에 NULL을 시도하십시오. @arrRooms.delete(room)
더 나은 방법이 있는지 모르겠지만 찾은 튜토리얼처럼 시도하고 있습니다.