[Rails]resources, member, collection 라우팅/이름 경로/URL을 기억하는 방법 [초보자를 위한]
입문
처음 뵙겠습니다.저는 장문이라고 합니다.
3개월이 넘게 걸려서 마침내 레일스 튜토리얼이라는 산에 올랐다
resources에서 생성된 경로/URL이 매우 편리합니다.
"어, 이름 경로가 user_path? users_path?""URL은/users?/user?/:id?"이렇게 혼란스러운 장면이 많아서 많은 사람들이 괜히 튜토리얼을 한 바퀴 돌았다.
이런 초보 친구들의 참고가 된다면 좋겠다.
환경
ruby 2.6.3
Rails 6.0.3.4
7개 RESTful 라우팅(기초)
자원 이름은 users 자원 (예:) 입니다.
routes.rb
resources :users
이 코드를 실행할 때 생성된 7개의 루트는동작 순서로 보면
활동 이름
HTTPreq
URL
경로 이름 지정
users#index
GET
/users
users_path
users#show
GET
/users/:id
user_path
users#new
GET
/users/:id/new
new_user_path
users#create
POST
/users
users_path
users#edit
GET
/users/:id/edit
edit_user_path
users#update
PATCH/PUT
/users/:id
user_path
users#destroy
DELETE
/users/:id
user_path
그렇구나.
(※ 동작 이름은 컨트롤러 이름에 따라 # 동작 이름을 표시하는 방법)
7개의 동작 이름과 순서에 대해... 힘내서 기억해라.
조금 기억하는 팁으로.
index와 쇼는 한 쌍입니다.index는user의 집합(전체)이고show는user의 개체를'표시하는 기능'으로 함께 기억하세요.
new와create도 한 쌍입니다.new 템플릿의 표에 입력된 정보에 따라create 동작에 연결되어user 실례를 만드는 경우가 많죠.
edit와 update도 한 쌍입니다.편집 템플릿의 표에 입력된 정보에 따라 업데이트 동작을 연결하여user의 실례를 업데이트하는 경우가 많죠.
마지막은destroy.짝이 없는 외로운 동작군입니다.
URL과 명명된 경로의 관계
다음은 URL과 명명 경로 두 가지 명명 규칙을 알아보겠습니다.
[규칙 ①]/: id의 유무에 따라 분류
먼저 URL은/users로 시작됩니다.이곳은 복수 형식으로 통일되었다.
뒤에/:id가 있는지 여부에 따라 분류합니다.
/: id가 없을 때 → 경로가 "복수 형식"인 users_path
/: id가 존재할 때 → 경로가 "단수"인 user_path
[규칙 ②] URL 뒤에 있는 옵션은 명명된 경로의 첫 번째 부분에 있습니다.
여기서 말하는 옵션은
/users/○○
/users/:id/○○
위의 ○○부분.
이 모드의 URL 이름 경로는 규칙에 따라 ①
옵션 이름_users_path 또는
옵션 이름_user_path.
이렇게 하면 머리에 선택한 항목의 이름이 있는 규칙으로 명명됩니다.
하면, 만약, 만약...
/users/: id/new의 이름 경로는 new_user_path
똑같이
/users/: id/edit의 이름 경로는edit_user_path
이해해요.
(이 법칙은 이후에 나타나는 member와collection에서 생성된 임의의 루트에도 적용됩니다. 기억하세요!)
명명된 경로에서 7개 경로 재구성
이번에는 현재 기억하고 있는 모든 명명 경로에 따라 경로를 다시 정리해 봅시다.
경로 이름 지정
HTTPreq
URL
반응하는 동작
users_path
GET
/users
users#index
〃
POST
/users
users#create
new_user_path
GET
/users/:id/new
users#new
edit_user_path
GET
/users/:id/edit
users#edit
user_path
GET
/users/:id
users#show
〃
PATCH/PUT
/users/:id
users#update
〃
DELETE
/users/:id
users#destroy
그렇습니다.
index와create 둘 다 users_path.
이것은 사용자 집합 (집합) 동작이라는 것을 기억해라.
index: 전체 컬렉션 표시
create: 전체 집합에 실례 추가
뒤에 5개는 user_path를 바탕으로
new와edit는 방금 본 것처럼 옵션이 있는 이름 경로입니다.
이렇게 두 방향으로 정리하면 이해도 많이 깊어지겠죠.
참고로 $rails routes를 실행할 때 여기의'모든 이름 경로'는 루트를 표시합니다. 자세히 보면 더욱 이해하실 수 있습니다.
member 방법과 컬렉션 방법
그리고users 자원에 임의의 루트를 추가하는member 방법,collection 방법
이 두 가지 방법으로 생성된 URL과 이름 경로를 살펴보겠습니다.
그것들은 블록으로resources:users에 전달됩니다.
routes.rb
resources :users do
member do
get :foo, :bar
end
collection do
get :hogehoge
end
end
각 메서드의 특성:member 메서드는 user_path에 작업을 추가합니다.
collection 메서드는 users_path에 작업을 추가합니다.
메서드 작성:
get:foo,:bar의 줄을 주의하십시오.
HTTP 요청 유형: 옵션 작업 이름: 옵션 작업 이름.
※ 여러 동작명을 전달할 수도 있습니다.
위의 예에서users#foo,users#bar,users#hogehoge
에서 기술한 장면은 다음과 같은 절차를 이용하여 명세표를 작성하여 개념 디자인에서 체량의 부피를 분석하도록 한다.
동적 입력 프롬프트에서 클릭
동작 이름 = URL 또는 이름 지정 경로 옵션
이렇게 생각하면 이해하기 쉽다.
선택 사항이므로 URL은 "뒤로"이고 경로는 "헤더"규칙입니다.
생성된foo조작,bar조작,hogehoge조작 포함
각 명명된 경로의 경로를 재구성합니다.
지금의 여러분이라면 왜 이런 명명 경로가 되었을까요.
왜 이런 URL인지 이해할 수 있을 거예요.
경로 이름 지정
HTTPreq
URL
반응하는 동작
hogehoge_users_path
GET
/users/hogehoge
users#hogehoge
foo_user_path
GET
/users/:id/foo
users#foo
bar_user_path
GET
/users/:id/bar
users#bar
users_path
GET
/users
users#index
〃
POST
/users
users#create
new_user_path
GET
/users/:id/new
users#new
edit_user_path
GET
/users/:id/edit
users#edit
user_path
GET
/users/:id
users#show
〃
PATCH/PUT
/users/:id
users#update
〃
DELETE
/users/:id
users#destroy
여기서 마치겠습니다.
끝까지 함께 해줘서 고마워요.
제 생각에는 졸렬한 내용인 것 같아요.
만약 이 기사가 약간의 이름의 경로로 혼란스러워하는 사람들에게 도움을 줄 수 있다면 좋겠다.
잘 부탁드립니다
유동문
Reference
이 문제에 관하여([Rails]resources, member, collection 라우팅/이름 경로/URL을 기억하는 방법 [초보자를 위한]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Shota-NAGAE/items/7e782437a76bb0aecc7b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)