레일에서 경로를 사용하는 동안 _url과 _path의 차이점은 무엇입니까?
우리가 루트 정의 할 때 routes.rb
같은 이름을 사용하여 map.some_link
두 개의 ways-에있는 링크를 사용할 수 있습니다 먹을 some_link_url
, some_link_path
.
- 둘의 차이점은 무엇입니까?
- 어느 것이 더 안전합니까?
나는 같은 질문이 있었고 내 블로그에 이것에 대한 작은 글을 썼다 .
그 이유는 여기에 요약되어 있습니다 (포럼에서 찾았습니다).
* _path는 ahref가 현재 URL에 암시 적으로 연결되어 있으므로보기 용입니다. 따라서 반복해서 반복하는 것은 바이트 낭비입니다. 그러나 컨트롤러에서는 HTTP 사양이 3xx 리디렉션의 Location : 헤더가 완전한 URL임을 요구하기 때문에 redirect_to에 * _url이 필요합니다.
다음은 SSL이 아닌 사이트에서 SSL 사이트에 연결할 때 절대 URI를 사용해야하는지 여부에 따라 달라지는 또 다른 설명 입니다.
내가 지금까지 읽은 것은 그들 중 어느 것이 다른 것보다 더 안전하다는 것을 암시하지 않습니다. 실제로 "적절한"사용법이 무엇인지에 달려 있습니다.
path
상대적인 반면 url
절대적입니다.
"사용자"라는 리소스의 차이점 예 :
users_url # => http://localhost:3000/users
users_path # => /users
최신 브라우저가 상대 리디렉션을 잘 처리 한다는 점을 제외하면 Petros와 같은 대답 입니다. (그의 대답에 대해 언급하고 싶지만 아직 할 수 없습니다.)
전달 된 모든 데이터를 노출하지 않는다는 의미라면 _path가 '/ login'과 같은 상대 URL을 생성하므로 _path가 더 좋지만 _path는 ' http : // localhost : 3000 / login '을 제공합니다. 같은 것에 대해 언젠가 찾은이 블로그 게시물을 참조하십시오. _url이 _path보다 나은 경우
_url은 전체 경로를 제공합니다. 도메인 이름과 프로토콜이 포함되어 있으므로 예를 들어 사용할 수 있습니다. 이메일을 보내거나 다른 도메인으로 리디렉션하는 등
_path는 도메인, 프로토콜 등없이 '/'뒤에 오는 경로를 반환합니다. 따라서 도메인에 대한 세부 정보가 필요하지 않은 곳에서 가끔 사용할 수 있습니다.
_url
그동안 도우미는 전체 URL을 포함하는 문자열을 생성 _path
도우미 응용 프로그램, 예를 들어 루트에서 상대 경로를 포함하는 문자열을 생성합니다 :
photos_url # => "http://www.example.com/photos"
photos_path # => "/photos"
에 따라 레일 가이드 - 라우팅 .
'Program Tip' 카테고리의 다른 글
Ubuntu에서 PyCharm 실행기 다시 만들기 (0) | 2020.11.06 |
---|---|
Ubuntu에서 JDK 1.7에서 JDK 1.8로 이동 (0) | 2020.11.06 |
android : 링크를 클릭 할 수있는 textview의 html (0) | 2020.11.06 |
AngularJS : 사용자 지정 필터 및 ng-repeat (0) | 2020.11.06 |
DateTime으로 최신 시간을 어떻게 지정할 수 있습니까? (0) | 2020.11.06 |