2011-09-18 2 views
2

을 주문수 MetaSearch 일종의 내가 모델을 열

= sort_link @search, :date_begin 

내가 DESC 아무것도가 있기 때문에 발생하지 않기 때문에 date_begin 주문하려고 해요 SQL 쿼리는 다음과 같습니다.

SELECT * FROM events ORDER BY date_begin, date_begin DESC 

MetaSearch에서이 열을 재정렬하려면 어떻게합니까?

@search = Event.unscoped.search(params[:search]) 

답변

1

당신은 unscoped 방법을 사용할 수 있습니다 (I는 액티브에 "재주문"방법이 있다는 것을 알고 있지만 나는 수 MetaSearch에 적용하는 방법을 모른다) 또한 기본 정렬 순서를 사용하고 싶어하고 모델에 대한 순서 범위를 사용하지 않는 컨트롤러의 기본 순서를 시행하는 것보다 다른 방법을 알아낼하지 않았다 :

search = {"meta_sort" => "created_at.desc"}.merge(params[:search] || {}) 
@search = Photo.search(search) 

기본 정렬 순서는 created_at입니다 DESC, 그러나 그것은 overw 될 것이다. params에 새로운 정렬 순서가 있으면 ritten. 나를 위해 일하는 것 같습니다.

+0

그러나 범위와 기본 순서를 날짜별로 사용하고 사용자가 "sort_link"를 클릭 할 때 date_begin 열을 기준으로 다시 정렬하려고합니다. 가능한가? –

0

I : 당신이 meta_search을 사용하기로 결정 때

0
@search = if params[:q] && params[:q][:s] 
    # Ransack sorting is applied - cancel default sorting 
    Event.reorder(nil).search(params[:q]) 
else 
    # Use default sorting 
    Event.search(params[:q]) 
end 

장점 :

1)에만 취소 : - : deleted_at => 무기 호) .order (: date_begin) 기본 범위 주문 범위 유용합니다 (어디에요이있는 경우.

2) Ransack 정렬이 적용되지 않은 경우 기본 순서가 사용됩니다.