2011-12-28 5 views
0

약간 혼란 스럽네요. 이 주제를 둘러싼 모든 질문에도 불구하고 올바른 해결책을 찾을 수 없습니다.레일 metasearch search_form 확인란으로

내가 원하는 것은 단순히 인덱스 필터 양식에 확인란을 추가하는 것입니다.

<form class="filter_form"> 
    <%= form_for @search do |f| %> 
     <%= f.collection_select :categories_id_equals, Category.all, :id, :name, :include_blank => true, :prompt => "All categories" %> 
     <%= f.collection_select :location_id_equals, Location.all, :id, :name, :include_blank => true, :prompt => "All locations" %> 

     <ul> 
      <b> Type </b>  
      <% Type.all.each do |type|%> 
     <li> 
      <%= check_box_tag :types_id_equals, type.id %> 
      <%=h type.name %> 
     </li> 
      <% end %> 
     </ul> 
     <%= submit_tag "Find Now", :class => "find" %> 
    <% end %> 

모든 체크 박스를 제외하고 잘 작동 : 여기 메타 검색의 보석을 사용하고

내 현재 코드입니다.

나는 레일에서 많은 경험이 없으므로 내가 잘못하고있는 것을 실제로 볼 수 없으며 가장 편리하고 간단한 방법이 무엇인지 알지 못합니다.

업데이트 .....................

더 설명 - 저는 두 모델 HABTM 관계가 모델 여행, ( 카테고리를 가지고 , Types)이며 위치에 속합니다.

카테고리 (f.collection select), 위치 (f.collection select) 및 유형 (checkbox)별로 여행을 필터링 할 수 있기를 원합니다.

유형을 확인한 후 제출 - 아무 것도 변경되지 않으면 필터링이 수행되지 않습니다!

+1

어떤면에서 작동하지 않습니까? 그나마 apear? 예외가 있니? 당신은 그것들을 검사 할 수 있지만'params' 해시로 검사 된 ID 하나만이 전송됩니까? – davidb

+0

변경 사항이 없으며 확인란이 결과를 필터링하지 않습니다. 그러나 <% = check_box_tag %>에서 <% = f.check_box %> (으)로 변경 한 후에는 하나의 ID 만 전송됩니다. – emilsw

답변

0
<%= check_box_tag "type_ids[]", type.id %> 

당신을 위해 할 것입니다. 선택된 ID는 commatas로 구분 된 문자열로 전송됩니다. params[:type_ids]에서 찾을 수 있지만 수동으로 처리해야합니다! Rails는 프레임 워크가 아닌 마술사입니다.

+0

여전히 좋지 않습니다. 하지만 설명해 주시겠습니까 - 수동으로 처리해야한다는 것은 무엇을 의미합니까? 내가 말했던 것처럼 나는 아직도 초보자 다 :) – emilsw

0

내가 어떻게 처리했는지.

<% @sub_categories.each do |cat| %> 
    <h2><%= cat.name %> <%= check_box_tag "q[product_category_id_in][]", cat.id %></h2> 
<% end %> 

기본적으로 그냥 q는 쿼리 PARAM 후 바로 meta_search 방법에서 그 괄호 하위 후, 무엇이든이다. 검색 할 배열에 둘 이상의 ID를 추가 할 수 있기를 원하기 때문에 whatever_foreign_key_in을 사용했습니다. 그런 다음 빈 브래킷을 추가하면 레일이 포스트 매개 변수를 올바르게 처리합니다.

관련 문제