Я бы хотел написать быстрый объем для фильтрации моих ресторанов.Оптимальная область для фильтра
я что-то вроде этого
@restaurants = Restaurant.all
@restaurants = filter(@restaurants)
def filter(restaurants)
restaurants = restaurants.filter('types', params[:type].split(',')) unless params[:type].nil?
restaurants = restaurants.filter('cuisines', params[:cuisine].split(',')) unless params[:cuisine].nil?
restaurants = restaurants.filter('facilities', params[:facility].split(',')) unless params[:facility].nil?
restaurants = restaurants.filter('services', params[:service].split(',')) unless params[:service].nil?
restaurants = restaurants.filter('prices', params[:price].split(',')) unless params[:price].nil?
return restaurants
end
где фильтр:
scope :filter, lambda{|type_name, type_id| includes(type_name.to_sym).where(["#{type_name}.id in (?)", type_id]) }
так ... когда я получаю URL:
.../search?service=1,2,3
я получаю рестораны с обслуживанием 1 ИЛИ 2 ИЛИ 3, но я хотел бы получить рестораны с услугами 1 И 2 И 3. Как я могу сделать это как fas t, насколько это возможно?
Есть проблемы с delete_at (нет операции delete_at для String/service/1,2,3) и т. Д. :( –
D'oh! In Rails 2 Я думаю, что он проходит как массив. Попробуйте разбить, чтобы получить массив компонентов пути. – jxpx777