2013-04-05 2 views
0

기본값 : 아래의 월/년 기본값을 선택하면 검색 후 항상 다음 값으로 되돌아갑니다. 검색 후 페이지가로드 된 후 기본값 대신 검색이 수행되도록 선택 항목을 선택 항목으로 설정하는 방법이 있습니까?Ransack으로 처음 검색 한 후 초기/기본 선택 옵션을 삭제하는 방법

컨트롤러의 기본값을 한 번 설정하고 검색이 첫 번째가 아니거나 다른 값을 선택한 것으로 판단되면 무시하는 것이 좋습니다.

답변

1

매개 변수가 nil인지 확인하는 것만 큼 간단해야합니다.

<%= search_form_for @search, :html => {} do |f| %> 
    <div class="control-group"> 
    <div class="controls form-inline"> 
     <%= f.select :rollout_month_eq, months, {:selected => params[:q].try(:[], :rollout_month_eq) || months[Date.today.month - 1]} %> 
     <%= f.select :rollout_year_eq, years, {:selected => params[:q].try(:[], :rollout_year_eq) || years[1]} %> 
     <%= f.submit "Apply" %> 
    </div> 
    </div> 
<% end %> 

매개 변수 구조를 반영하여 편집되었습니다.

+0

params [: q] [ "rollout_month_eq"]가 컨트롤러에서 nil인지 확인한 다음 그에 따라 선택한 달 변수를 설정하면 좀 더 복잡한 것을 구현했습니다. 당신의 솔루션은 실제로 작동하지 않는 것 같습니다 ... – danebez

+0

감사합니다, 귀하의 솔루션은 간단하지만 조정이 필요합니다 : 매개 변수를 통해 액세스 할 수 있습니다 : q, 그래서 우리는 확인해야합니다 : q 먼저 존재합니다. 작동 방식 : : selected => params [: q]? params [: q] [: rollout_month_eq] : months [Date.today.month - 1] – danebez

+0

그럴 수도 있고 다른 방법으로 내 업데이트 된 답변을보고 매개 변수 구조를 고려해 볼 수도 있습니다. –