2016-12-01 1 views
2

루비의 덩어리 보석 (https://github.com/activerecord-hackery/ransack)을 사용하는 웹 응용 프로그램에서 여러 검색 막대 (20 개 이상)가 있습니다.선행 및 후행 공백을 기본으로 제거하기 위해 ransack을 어떻게 구성합니까?

내가 20 개 이상의 모든 검색에 대해 선행 및 후행 공백을 제거하는 방법을 알고있는 사람이 있습니까?

include ApplicationHelper 
before_action :strip_query, only: :index 

나는 DRY 방법을 찾고 있어요 : 각 컨트롤러의 시작 방법을

def strip_query 
    params[:q] = Hash[params[:q].map { |key, str| [key, str.strip] }] unless params[:q].blank? 
end 

그리고 전화 :

나의 현재 솔루션은 응용 프로그램 도우미에서 다음과 같은 방법을 만드는 것입니다 그것은 20 개 이상의 모든 컨트롤러에서 코드를 반복하지 않습니다.

https://github.com/activerecord-hackery/ransack/issues/332

는 것이 가능 config/initializers/ransack.rb 파일에 새 조건을 만들 제안합니다,하지만이 새로운 조건을 참조하기 위해 각보기에서 검색을 변경 필요합니다.

내 문제를 해결하는 가장 좋은 방법은 무엇입니까? 모든 검색 쿼리의 기본값으로 공백을 제거하도록 ransack을 구성 할 수 있습니까?

나는 application_controller.rb

def query_params 
    query = params[:q] || {} 
    Hash[query.map { |key, value| [key, value.strip] }] 
end 

이 같은 방법을 추가하고보다에 Foo.ransack(params[:q])에서 컨트롤러의 호출을 바꿀 것

답변

1

:

가 느린 응답
Foo.ransack(query_params) 
+0

미안 해요, 난 무리를 시도하고 있었다 다른 것들. 결국 당신의 제안은 가장 깨끗한 구현을 가졌습니다. 감사! –