2016-09-07 6 views
-1

난 페이지 매기기에 카미나리를 사용하고있는 레일 어플리케이션이 있습니다.레일에있는 gsub에 대한 정규식

어떻게 든 kaminari는 하이퍼 링크에 잘못된 URL을 사용하고 있습니다.

지금 당장은 일부 정규 표현식을 요구하는 쉬운 수정을 찾고 있습니다 & gsubbing.

나는 미나리에서이 URL을 가지고 :

"/bookings/hotels//Pune?arrival_date=....." 

나는이 부분을 대체 할 - /hotels//Pune?를이와 - /hotels?

(가 변경 될 수 있습니다) Pune 대신에 다른 문자열이있을 수 있습니다.

어떻게해야합니까?

답변

1

캡처 및 URL을 장난 할 때 난 항상 URI library를 사용 match capture

gsub(/hotels(\/\/\w+)\?/){|m| m.gsub($1, '')} 

str = "/bookings/hotels//Pune?arrival_date=....." 
str.gsub(/hotels(\/\/\w+)\?/){|m| m.gsub($1, '')} 

#=> "/bookings/hotels?arrival_date=....." 
0

gsub ("// Pune", "") 여기에 4 개의 정규 표현식이 필요 없습니다.

+0

글쎄, 나는 푸네 부분이 동적 일 것이라고 언급하지 않았기 때문에 미안하다고 말해야 만합니다. 질문을 편집합니다. – RamanSM

1

사용하는 대신, 그것은 (쿼리 문자열이 포함 된 경우 특히) 당신을 위해 마술의 일부를 수행합니다.

첫 번째 장소에서 올바른 URL을 얻을 수있는 방법이 있지만 상황이 이와 비슷할 것입니다.

require 'uri' # probably not necessary if you are using Rails 

old_url = "/bookings/hotels//Pune?arrival_date=blahblah" 
uri  = URI(old_url) 

# remove everything between the first double '//' and the end of the string 
uri.path = uri.path.gsub(/\/\/.+\Z/, '') 
# => "/bookings/hotels" 

# output a new url using the new path but including the original query string 
new_url = uri.to_s 
# => "/bookings/hotels?arrival_date=blahblah"