request.url이 내게 : http://localhost:3000/page?foo=bar을 반환합니다.레일 - GET 매개 변수없이 현재 URL 가져 오기
http://localhost:3000/page을 얻기 위해 호출 할 수있는 메소드가 있습니까, 아니면 매개 변수를 제거하기 위해 문자열을 구문 분석해야합니까?
request.url이 내게 : http://localhost:3000/page?foo=bar을 반환합니다.레일 - GET 매개 변수없이 현재 URL 가져 오기
http://localhost:3000/page을 얻기 위해 호출 할 수있는 메소드가 있습니까, 아니면 매개 변수를 제거하기 위해 문자열을 구문 분석해야합니까?
request.path
호스트 이름에 대해 신경 쓰지 않는다면 원하는 것을 반환해야합니다. 그렇지 않으면 당신은 시도 할 수 있습니다 :
url_for(:only_path => false, :overwrite_params=>nil)
을 나는 다음과 같은 사용
request.original_url.split('?').first
그것은 경로를 다시 생성하지 않기 때문에, 정확히 마이너스 쿼리를 최종 사용자가 브라우저에서 보는 URL을 당신을 제공합니다 매개 변수.
니스! 또한 간결한'request.url.split ('?'). 첫 번째는 나를 위해 일했다. – Franco
@Franco'request.url'은 더 이상 사용되지 않습니다.하지만 잘 모르겠습니다. – thekingoftruth
이것은 'request.referrer'에서도 잘 작동하므로보다 유연합니다. – steel
쿼리 매개 변수없이 요청 URL을 가져 오려면.
def current_url_without_parameters
request.base_url + request.path
end
또한 재귀 매개 변수 문제인/controller/action? param = 1? param = 2? param = 3'을 만났지만 request.path가 훌륭하게 작동했습니다. –
위의 방법과 관련된 문제는 동일한 유형의 리소스에 대해 여러 경로가있는 경우 (예 : "/ news/post-name"및 "/ blog-name/post-name"), 그러면 잘못된 경로를 다시 얻을 수 있습니다. – thekingoftruth
@thekingoftruth 사실이긴하지만 우선 순위가 가장 높은 경로가 사용되므로 올바르게 주문해야합니다. – tadman