루비 온 레일즈에서 현재 절대 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.url
에 request.request_uri
이렇게 하면 프로토콜(일반적으로 http://)과 호스트 및 request_uri가 결합되어 전체 주소가 제공됩니다.
나는 루비 온 레일즈 3.0 방식이 지금이라고 생각합니다.request.fullpath
.
사용할 수 있습니다.url_for(only_path: false)
사용 중지 경고:#request_uri를 사용하는 것은 더 이상 권장되지 않습니다.대신 전체 경로를 사용합니다.
Rails 3.2 또는 Rails 4를 사용하는 경우에는request.original_url
URL을 . 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_uri
Ruby 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
'programing' 카테고리의 다른 글
각진 js에 사용된 것과 같은 매개 변수로 명명된 유형 스크립트? (0) | 2023.07.18 |
---|---|
rm' 대신 'gitrm'을 사용하여 파일을 제거하는 이유는 무엇입니까? (0) | 2023.07.18 |
git-upload-pack: 명령을 찾을 수 없음, 원격 Gitrepo 복제 시 (0) | 2023.07.18 |
파이썬 스크립트에서 파이썬패스를 설정하려면 어떻게 해야 합니까? (0) | 2023.07.18 |
PyTorch에서 선호하는 텐서 복사 방법 (0) | 2023.07.18 |