루비의 덩어리 보석 (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])
에서 컨트롤러의 호출을 바꿀 것
미안 해요, 난 무리를 시도하고 있었다 다른 것들. 결국 당신의 제안은 가장 깨끗한 구현을 가졌습니다. 감사! –