У меня есть страница, которая перечисляет маршруты и предоставляет текстовый поиск - см. Текущую версию здесь http://www.trailsee.com/trails. Я добавляю форму для фильтрации результатов поиска, например. с трудом, действия, длина, позволяет собакам и т. д. У меня работает фильтр, но он не загружает ранее используемые параметры в полях флажка, где пользователь может выбрать несколько элементов, например. позволяет ездить на велосипеде, позволяет походы и т. д. после поиска. В настоящее время он загружает только параметр для наибольшего значения. например если у меня есть параметры сложности = 0 & трудность = 1 & трудность2 он загрузит только страницу с трудностью 2 выбранной.Заполнять флажок из params
В частности: travel_type (radio),: проблема (флажок),: собаки (флажок) и: action_types (флажок) имеют проблему.
Вот пример URL с Params http://localhost:3000/trails?utf8=%E2%9C%93&travel_type=on&max_time=168&max_distance=35&difficulty=0&difficulty=1&difficulty=2&dogs=1&dogs=2&action_types=1&action_types=2&action_types=3&commit=Filter
На перезагрузкой travel_type 2 был выбран трудностью 2 был выбран собак 2 был выбран action_types 3 был выбран
Вот мой взгляд код, написанный в slim
.page
section.search
.row
form.form-inputs.columns.large-6.large-offset-1#search-form action=trails_path method='get'
input type='search' placeholder='Search' name='query_string'
button.button-search
i.sprite-icon-search
section.filter
.row
= form_tag nil, method: :get, class: 'form-inputs columns large-11 large-offset-1', id: 'trail-filter-form' do
.estimate_time
strong Estimate time using
ul
li
= radio_button_tag :travel_type, params[:travel_type], 0
= label_tag 'Hiking'
li
= radio_button_tag :travel_type, params[:travel_type], 1
= label_tag 'Running'
li
= radio_button_tag :travel_type, params[:travel_type], 2
= label_tag 'Biking'
div.max_time
strong Max Time
div.time
p
= '30m'
= range_field_tag :max_time, params[:max_time], in: 30..240
= '4+ hours'
p
strong Max Distance
div.distance
p
= '1mi '
= range_field_tag :max_distance, params[:max_distance], in: 1..50
= '50+ mi'
div.difficulty
strong Difficulty
div
p
= check_box_tag :difficulty, 0, params[:difficulty] == '0'
= label_tag
i class='sprite-icon-difficulty-0'
= check_box_tag :difficulty, 1, params[:difficulty] == '1'
= label_tag
i class='sprite-icon-difficulty-1'
= check_box_tag :difficulty, 2, params[:difficulty] == '2'
= label_tag
i class='sprite-icon-difficulty-2'
p
strong Dogs
div
= check_box_tag :dogs, 0, params[:dogs] == '0'
= label_tag 'Off Leash'
= check_box_tag :dogs, 1, params[:dogs] == '1'
= label_tag 'w/Leash'
= check_box_tag :dogs, 2, params[:dogs] == '2'
= label_tag 'Not Allowed'
div.views
strong Views
div
= check_box_tag :views, 1, params[:views] == '1'
= label_tag 'Has Views'
p
strong Activities Allowed
div
= check_box_tag :action_types, 0, params[:action_types] == '0'
= label_tag
i class='sprite-icon-horseback-med'
= check_box_tag :action_types, 1, params[:action_types] == '1'
= label_tag
i class='sprite-icon-ski-med'
= check_box_tag :action_types, 2, params[:action_types] == '2'
= label_tag
i class='sprite-icon-hiking-med'
= check_box_tag :action_types, 3, params[:action_types] == '3'
= label_tag
i class='sprite-icon-bike-med'
= submit_tag 'Submit', value: 'Filter', class: 'button small right trail-filter'
section.content#trails-find
.row.find-trails-map
.large-11.large-offset-1.columns
.map#find-map
= render 'trails/trail_list', locals: { decorated_trails: decorated_trails,
title: 'PUBLIC TRAILS' }
Спасибо! Когда я использую приведенный выше код, по умолчанию устанавливаются флажки для выбора при загрузке/перезагрузке. Я хочу, чтобы они по умолчанию были непроверены, но когда они заполняют свой выбор для фильтра, я бы хотел его перезагрузить с их выбором. При обновлении он также не изменяет параметр URL. Это все еще трудность = 0 и трудность = 1 и трудность = 2. Как я могу изменить это выше, чтобы сделать это? – dsick
Извините! Я исправил свой выше код, чтобы URL-адрес был правильно обновлен. Также ознакомьтесь с http://apidock.com/rails/ActionView/Helpers/FormTagHelper/check_box_tag для получения дополнительной информации – Dontreadonme