Я создаю приложение базы данных, которое отслеживает множество данных для Лица, таких как first_name, last_name, DOB и еще 20 полей.Мне нужна форма поиска с большим количеством полей. Как это сделать в Ruby on Rails?
Пользователи должны будут иметь возможность искать все эти поля. У меня возникли проблемы с написанием чистого кода для этого. Приведенный ниже код является то, что я до сих пор в моем people_controller:
данные передаются от form_tag
def search
@people = Person.all
general_info_string = String.new
if(params[:first_name] != "") then general_info_string << 'people.first_name = "' + params[:first_name] + '" AND ' end
if(params[:last_name] != "") then general_info_string << "people.last_name = '" + params[:last_name] + "' AND " end
... Lots more of similar clauses
general_info_string = general_info_string[0, general_info_string.length - 5]
# ^This line removes the trailing " AND " from the string
@people = @people.where(general_info_string)
end
general_info_string
так называется, потому что есть больше «где» подпункты (не показаны) и отдельные строки что я строю для их поиска.
Проблема в том, что код выглядит как беспорядок и кажется «хакерским» способом сделать что-то, что должно хорошо поддерживаться Rails. Как я могу выполнить эту операцию более чистым способом?
Можете ли вы объяснить свой последний абзац дальше? Как создать «таблицу значений ключей»? – user1943735