На мой взгляд, ваше решение достаточно хорошее.Понятно, что он делает, и он не обращается к базе данных без необходимости.Но код может быть улучшен до:
def index
@search = Article.search(params[:search])
@places = @search.search_attributes.values.all?(&:blank?) ? [] : @search.all
end
Проверка хеша на пустое не способ сделать это.Хэш типа {'name_contains' => ''}
, который вы получите, если отправленная форма будет пустой, вернет false
.
Также лучше установить @places
в пустой массив, а не nil
.Таким образом, вам не нужно проверять nil
, и ваш цикл все равно будет работать.