2014-12-31 3 views
1

params를 사용하는 방법을 배우고 있으므로 검색을 시작하기 전에이 코드를 사용하고 싶습니다. 나는 사용자가 그것을 제출할 때 주소에 이미 다운 케이스를 돌 보았다.검색 매개 변수를 downcase로 지정하십시오.

여기서 매개 변수는 어디에 넣어야합니까?

@ads_item_plus_today = @ads_item_plus_today.where(category_id: params[:category_id]) if params[:category_id] 

@ads_item_plus_today = @ads_item_plus_today.where("address LIKE ?", "%#{params[:address]}%") if params[:address] && params[:address] != '' 
+0

"사용자가 제출할 때 주소에 이미 소문자를 돌 보았습니다"라는 의미는 무엇입니까? 주소 매개 변수를 이미 줄인 경우 어떻게해야하는지 묻습니다. –

+0

오 죄송합니다. 사용자가 주소를 제출하는 주소 입력란을 처리했습니다. 이제는 사용자가 주소를 검색하여 해당 주소를 소문자로 변환 할 수 있도록 만드는 방법을 모색했습니다. –

답변

0

다음 중 하나를 수행 할 수 있습니다 그와 downcase에서 현재 위치 :

if params[:address].present? 
    address = params[:address].downcase 
    @ads_item_plus_today = @ads_item_plus_today.where("address LIKE ?", "%#{address}%") 
end 

: params[:address]의 값을 수정합니다 또는 downcased있어 복사본을 만들 수 있습니다

if params[:address].present? 
    params[:address].downcase! 
    @ads_item_plus_today = @ads_item_plus_today.where("address LIKE ?", "%#{params[:address]}%") 
end 

.... .. 변경되지 않습니다 params[:address].

그러나 데이터베이스에 따라이 작업을 수행 할 필요는 없습니다. 많은 구성에서 LIKE comparisons in MySQL are case-insensitive (SHOW COLLATION으로 확인하거나 COLLATE을 사용하여 쿼리 단위로 설정할 수 있습니다). PostgreSQL에서는 LIKE 대신 ILIKE을 사용하여 대소 문자를 구분하지 않을 수 있습니다.

+0

postgreSQL을 사용할 것이므로이 부분을 살펴볼 필요가 있습니다. 고마워요 @ 요르단 –

+0

경고! 이게 러시아어에서 작동하지 않을 수도 있습니다. 영어 이외의 다른 문자열도 가능합니다. "''keyword.mb_chars.downcase'''를해야했습니다. – AndreiMotinga