2015-02-05 10 views
0

나는 흔적을 나열하고 텍스트 기반 검색을 제공하는 페이지가 있습니다. 현재 버전은 여기 http://www.trailsee.com/trails입니다. 예를 들어 검색 결과를 필터링하는 양식을 추가하고 있습니다. 어려움, 활동, 길이, 개 등을 허용합니다. 필터가 작동하지만 사용자가 여러 항목을 선택할 수있는 확인란 필드에서 이전에 사용한 매개 변수를로드하지 않습니다. 자전거 타기, 수색 후 등산 가능. 현재는 매개 변수를로드하는 중입니다. 예 : 내가 params 어려움이 있다면 = 0 & 어려움 = 1 & 어려움 2 그것은 어려움 2가 선택된 페이지 만 적재 할 것입니다.매개 변수에서 확인란 채우기

특히 : travel_type (라디오), : difficult (체크 박스), : dogs (체크 박스) 및 : action_types (체크 박스)에 문제가 있습니다. 여기

는 다시로드 travel_type 2에 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

내보기 코드로 작성 여기

을 선택한 개 (2)를 선택한 난이도 2 ACTION_TYPES 3을 선택한 선택한 PARAMS와 샘플 URL입니다 날씬한

.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' } 

답변

0

params [: difficult] 변수를 무시하고 있습니다. &difficulty=0&difficulty=1&difficulty=2으로 각 체크 박스에 고유 한 params 변수 이름을 지정해야합니다.

div.difficulty 
     strong Difficulty 
     div 
     p 
     = check_box_tag :difficulty0, true, false 
     = label_tag 
      i class='sprite-icon-difficulty-0' 
     = check_box_tag :difficulty1, true, false 
     = label_tag 
      i class='sprite-icon-difficulty-1' 
     = check_box_tag :difficulty2, true, false 
     = label_tag 
      i class='sprite-icon-difficulty-2' 
+0

감사합니다. 위 코드를 사용하면로드 /로드시 선택되는 체크 박스의 기본값이됩니다. 내가 원하는 것은 기본값으로 체크하지 않는 것이지만, 필터에 대한 선택을 채울 때 선택으로 다시로드하고 싶습니다. 또한 업데이트 할 때 URL 매개 변수도 변경되지 않습니다. 여전히 어려움 = 0 & 어려움 = 1 & 어려움 = 2. 내가 그것을 어떻게 바꿀 것인가? – dsick

+0

죄송합니다!, 위의 코드를 수정하여 URL을 올바르게 업데이트해야합니다. 자세한 정보는 http://apidock.com/rails/ActionView/Helpers/FormTagHelper/check_box_tag도 확인하십시오. – Dontreadonme