programing

루비 온 레일즈에서 현재 절대 URL을 얻으려면 어떻게 해야 합니까?

megabox 2023. 7. 18. 21:39
반응형

루비 온 레일즈에서 현재 절대 URL을 얻으려면 어떻게 해야 합니까?

루비 온 레일즈 보기에서 현재 절대 URL을 얻으려면 어떻게 해야 합니까?

request.request_uri상대 URL만 반환합니다.

레일 3.2 또는 레일 4+의 경우

당신은 야합다니해를 사용해야 .request.original_url현재 URL을 가져옵니다.현재 레포의 소스 코드가 여기에 있습니다.

이 메소드는 original_url 메소드로 문서화되어 있지만, 궁금하다면 구현은 다음과 같습니다.

def original_url
  base_url + original_fullpath
end

레일 3의 경우:

다니있습다▁write를 쓸 수 있습니다."#{request.protocol}#{request.host_with_port}#{request.fullpath}"로, 터부request.url이제 더 이상 사용되지 않습니다.


레일 2의 경우:

다니있습다▁write를 쓸 수 있습니다.request.urlrequest.request_uri이렇게 하면 프로토콜(일반적으로 http://)과 호스트 및 request_uri가 결합되어 전체 주소가 제공됩니다.

나는 루비 온 레일즈 3.0 방식이 지금이라고 생각합니다.request.fullpath.

사용할 수 있습니다.url_for(only_path: false)

사용 중지 경고:#request_uri를 사용하는 것은 더 이상 권장되지 않습니다.대신 전체 경로를 사용합니다.

Rails 3.2 또는 Rails 4를 사용하는 경우에는request.original_urlURL을 . URL을 확인하십시오.


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

def original_url
  base_url + original_fullpath
end

편집: 레일 7(문서)의 경우에도 마찬가지입니다.

current_url 메서드를 Application Controller에 추가하여 현재 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

Ruby on Rails 3.1.0.rc4에서:

 request.fullpath

는 서브디렉토리가 있는 애플리케이션 URL이 필요했습니다.사용:

root_url(:only_path => false)
 url_for(params)

또한 다음과 같은 새로운 매개 변수를 쉽게 추가할 수 있습니다.

url_for(params.merge(:tag => "lol"))

request.domain이 가능할 것 같습니다만, 만약 당신이 blah.blah.com 같은 하위 디렉토리에 있다면 어떨까요?이와 같은 것이 효과가 있을 수 있습니다.

<%= request.env["HTTP_HOST"] + page = "/" + request.path_parameters['controller'] + "/" + request.path_parameters['action'] %>

경로 구조에 따라 매개 변수를 변경합니다.

도움이 되길 바랍니다!

▁like처럼 보입니다.request_uriRuby on Rails 3에서는 더 이상 사용되지 않습니다.

Using #request_uri is deprecated. Use fullpath instead.

Ruby 1.9.3-p194 및 Ruby on Rails 3.2.6 사용:

요청이 있으면.전체 경로가 사용자에게 적합하지 않습니다. request.env["HTTP_REFERER"]

아래에 제 이야기가 있습니다.

를 들어, 다른 를 결합한 에 대한 현재 주소 을 감지하는 했습니다.http://localhost:3002/users/1/history/issues.

사용자는 다른 유형의 문제 목록으로 전환할 수 있습니다.이러한 모든 목록은 다른 컨트롤러/파티션에서 Ajax를 통해 로드됩니다(다시 로드하지 않음).

문제는 목록의 각 항목에서 뒤로 단추의 올바른 경로를 설정하여 자신의 페이지와 누적 페이지 기록에서 뒤로 단추가 올바르게 작동할 수 있도록 하는 것이었습니다.

제가 요청을 사용하는 경우.전체 경로, 그것은 내가 찾고 있는 URL이 아닌 마지막 자바스크립트 요청의 경로를 반환합니다.

그래서 request.env["사용했습니다.[HTTP_REFERRER"] - 마지막으로 다시 로드된 요청의 URL을 저장합니다.

여기 결정을 내리기 위한 부분에서 발췌한 것입니다.

- if request.env["HTTP_REFERER"].to_s.scan("history").length > 0
  - back_url = user_history_issue_path(@user, list: "needed_type")
- else
  - back_url = user_needed_type_issue_path(@user)
- remote ||= false
=link_to t("static.back"), back_url, :remote => remote

이는 Ruby on Rails 3.0에서 작동하며 대부분의 Ruby on Rails 버전에서 지원되어야 합니다.

request.env['REQUEST_URI']

누군가가 디버거를 사용하여 자신이 찾는 것을 찾았다고 말한 것을 제외하고는 여기 스레드에 있는 어떤 제안도 슬프게 저를 도와주지 않았습니다.

나는 표준 404와 500 대신에 몇 개의 사용자 정의 오류 페이지를 만들었지만,request.url로 끝난./404기대했던 것 대신에/non-existing-mumbo-jumbo.

제가 사용해야 할 것은

request.original_url

상대적으로 도메인이 없다는 뜻이라면, 그 다음에 조사해 보십시오.request.domain.

루비 방법을 사용할 수 있습니다.

:root_url

기본 URL을 사용하여 전체 경로를 얻습니다.

localhost:3000/bla
(url_for(:only_path => false) == "/" )? root_url : url_for(:only_path => false)

레일 3에서 사용할 수 있습니다.

request.original_url

http://apidock.com/rails/v3.2.8/ActionDispatch/Request/original_url

레일 3.2에 원하는 것을 사용할 수 있습니다.

request.original_url
or
request.env["HTTP_REFERER"]
or
request.env['REQUEST_URI']

어디서나 통할 것 같습니다.

"#{request.protocol}#{request.host}:#{request.port}#{request.fullpath}"

레일 4.0

사용할 수 있습니다.request.original_url출력은 아래 예시와 같습니다.

get "/articles?page=2"

request.original_url # => "http://www.example.com/articles?page=2"

다음 중 하나를 사용할 수 있습니다.

request.original_url 

또는

"#{request.protocol}#{request.host_with_port}" 

현재 URL을 가져옵니다.

Rails 3.2 또는 Rails 4의 경우 "request.original_url" 참조:원본 URL 방법

레일 3 As request.url은 더 이상 사용되지 않습니다.우리는 연결함으로써 절대 경로를 얻을 수 있습니다.

"#{request.protocol}#{request.host_with_port}#{request.fullpath}"

레일 2용

request.url

구체적으로 설명하려면 필요한 경로를 알고 있어야 합니다.

link_to current_path(@resource, :only_path => false), current_path(@resource)

레일 3의 경우:

부탁한다.만리길

request.env["REQUEST_URI"]

레일 2.3.4에서 작동하며 다른 버전에 대해서는 알지 못합니다.

쿼리 매개 변수 없이 요청 URL을 가져옵니다.

def current_url_without_parameters
  request.base_url + request.path
end

변수를 설정할 수 있습니다.URI.parse(current_url)저는 아직 이 제안서를 보지 못했고 저에게 효과가 있습니다.

사용할 수 있는 항목:

request.full_path

또는

request.url

당신의 문제가 해결되기를 바랍니다.

건배.

다음을 의미하는 절대 URL을 가져오려면from the root이렇게 표시할 수 있습니다.

<%= link_to 'Edit', edit_user_url(user) %>

users_url 도우미는 프로토콜 및 호스트 이름이 포함된 URL을 생성합니다.users_path 도우미는 경로 부분만 생성합니다.

users_url: http://localhost/users
users_path: /users

언급URL : https://stackoverflow.com/questions/2165665/how-do-i-get-the-current-absolute-url-in-ruby-on-rails

반응형