[ruby-on-rails] Ruby on Rails에서 현재 절대 URL을 어떻게 얻습니까?

Ruby on Rails보기에서 현재 절대 URL 을 얻으려면 어떻게 해야합니까?

request.request_uri단지 상대적인 반환 URL을 .



답변

Rails 3.2 또는 Rails 4+

request.original_url현재 URL을 얻는 데 사용해야 합니다.

이 메소드는 original_url 메소드 에 설명되어 있지만 궁금한 점은 다음과 같습니다.

def original_url
  base_url + original_fullpath
end

레일 3의 경우 :

당신은 쓸 수 "#{request.protocol}#{request.host_with_port}#{request.fullpath}"있기 때문에, request.url지금은 사용되지 않습니다.


레일 2의 경우 :

request.url대신 쓸 수 있습니다 request.request_uri. 이것은 프로토콜 (일반적으로 http : //)과 호스트 및 request_uri를 결합하여 전체 주소를 제공합니다.


답변

나는 Ruby on Rails 3.0 방법이 지금이라고 생각합니다 request.fullpath.


답변

당신은 사용할 수 있습니다 url_for(only_path: false)


답변

사용 중지 경고 : #request_uri 사용은 사용되지 않습니다 . 대신 전체 경로를 사용하십시오.


답변

당신이 사용하는 경우 레일 3.2 또는 레일 (4) 당신이 사용해야 request.original_url현재의 URL을 얻을 수 있습니다.


이 방법에 대한 설명서는 http://api.rubyonrails.org/classes/ActionDispatch/Request.html#method-i-original_url에 있지만 궁금한 경우 구현은 다음과 같습니다.

def original_url
  base_url + original_fullpath
end


답변

ApplicationController 에이 current_url 메소드를 추가 하여 현재 URL을 리턴하고 다른 매개 변수에서 병합 할 수 있습니다.

# https://x.com/y/1?page=1 
# + current_url( :page => 3 )
# = https://x.com/y/1?page=3
def current_url(overwrite={})
    url_for :only_path => false, :params => params.merge(overwrite)
end

사용법 예 :

current_url --> http://...
current_url(:page=>4) --> http://...&page=4


답변

Ruby on Rails 3의 경우 :

request.url
request.host_with_port

디버거 세션을 시작하고 요청 객체를 쿼리했습니다.

request.public_methods