рельсы 3 Выберите модель, где пункты не работают - PullRequest
0 голосов
/ 12 сентября 2011

У меня есть контроллер поисковой системы для расширенного поиска.вот мой контроллер.

@search = Building.joins('INNER JOIN "floors" ON "floors"."building_id" = "buildings"."id" INNER JOIN "spaces" ON "spaces".floor_id = "floors".id')
@building = []
@building << @search.where("buildings.name like ?", params[:building_name]) if params[:building_name]
@building << @search.where("Spaces.space_type_id = ?", params[:space_type][:space_type_id]) if params[:space_type][:space_type_id]
@building.flatten!

Но в моей оболочке WEBrick я вижу, что он делает только последнее, где.У меня есть данные в параметрах building_name и space_type.

Я беру этот пример для другого стекового потока (я не помню ссылку).Но если я удаляю второе откуда, берется название здания.

что не так?плохое определение моего массива @building?

спасибо

1 Ответ

0 голосов
/ 12 сентября 2011

Я думаю, что здесь происходит то, что вы храните два ActiveRecord::Relation, но рельсы на самом деле не дают результатов.В результате ваш планшет не работает так, как вы ожидаете.

ВОПРОС Пытаетесь ли вы получить все здания, в которых название похоже на building_name ИЛИ space_type или building_name И space_type.Приведенное ниже решение предполагает последнее, пожалуйста, дайте мне знать, если это первое.

Не могли бы вы попробовать это:

@search = Building.joins('INNER JOIN "floors" ON "floors"."building_id" = "buildings"."id" INNER JOIN "spaces" ON "spaces".floor_id = "floors".id')
@search = @search.where("buildings.name like ?", params[:building_name]) if params[:building_name]
@search = @search.where("Spaces.space_type_id = ?", params[:space_type][:space_type_id]) if params[:space_type][:space_type_id]
@building = @search

Это должно охватывать ваш запрос в соответствии с каждым критерием, но возвращать только значениякогда они вам нужны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...