누군가가 Ruby on Rails의 Mapped Resources와 Routes의 거래가 무엇인지 계층의 용어로 명확하게 설명해 주시겠습니까?

StackOverflow https://stackoverflow.com/questions/1801756

문제

나는 일하는 프로젝트에서 처음으로 Ruby를 사용해 왔기 때문에 여전히 다소 밧줄을 배우고 있습니다 (그리고 매 순간을 사랑합니다).

나는 요점을 이해하는 동안 map.connect Route.rb 파일의 함수는 레일의 "자원"및 "이름이 지정된 경로"기능을 이해하지 못합니다. 나는 여기에 레일 책을 가지고 있고 여러 번 읽었지만 여전히 그것을 얻지 못합니다. 내가 얻는 명명 된 경로 - 나는 그것들이 규칙이 명시 적으로 정의되거나 코드 블록으로 계산 된 규칙이라고 생각하지만 리소스는 나에게 완전한 미스터리입니다. 내가 그들을 반짝이는 유일한 것은 'resource_path'(및 멋진 관련 방법)을 부를 수있는 것과 같은 멋진 물건을 원한다면 필요하다는 것입니다.

내 현재 프로젝트는 다음과 같습니다.

map.resources :application_forms
map.resources :sections
map.resources :questions
map.resources :seed_answers
map.resources :question_types
map.resources :form_questions
map.resources :rules
map.resources :form_rules

.. 그러나 내 Rails 책에는이 멋진 "Has_many"와 "Only"유형의 해시 및 매개 변수가 매달려 있으며, 사용해야 할 때 정확히 해결할 수 없습니다.

누구든지 나를 똑바로 세울 수 있습니까?

도움이 되었습니까?

해결책

이름이 지정된 경로는 바로 그 것입니다. 이름이 첨부 된 경로로 URL을 생성 할 때 쉽게 참조 할 수 있습니다. 무엇보다도 모호성을 제거 할 수 있습니다.

자원은 기본적으로 조작하기 위해 경로를 갖고 싶은 '사물'입니다. '섹션'이 자원이라고 정의 할 때, 당신이하고있는 일은 "모든 섹션을 얻기위한 경로를 원합니다. 새 섹션을 추가 할 경로를 원합니다. 기존 섹션을 편집 할 경로를 원합니다. i. 섹션을 삭제할 경로를 원합니다. " 그런 종류의 것. 이 경로는 표준화 된 메소드 이름을 가리 킵니다 index, new, edit, 등등. 이러한 각 경로는 그 경로가 무엇인지에 따라 지정된 이름을 갖습니다. 그래서 이제는 이름이 지정된 경로가 있습니다 'edit_section'.

그만큼 :has_many 매개 변수를 사용하면 특정 종류의 물건에 하위 틀이 있다고 말할 수 있습니다. 예를 들어, 말할 수 있습니다 map.resources :sections, :has_many => [:questions]. 이는 질문이 섹션에 속하며 URL과 경로에 반영됩니다. 당신은 같은 URL을 얻을 수 있습니다 '/sections/27/questions/12' 그리고 명명 된 경로와 같은 'section_questions'.

그만큼 :only 매개 변수는 "이러한 행동에 대한 경로 만 만듭니다"라고 말합니다. 편집 또는 삭제가 아닌 목록,보기 및 항목 추가 만 허용하는 경우 사용할 수 있습니다.

다른 팁

솔직히 레일 라우팅 가이드 당신이 얻을 수있는 한 평범한 문구에 대한 좋은 설명을 줄 것입니다. 자원 경로 == 편안한 경로를 알고 있습니다.

우리는 DHH가 2006 년 첫 번째 Railsconf에서 Rails 커뮤니티에 소개했을 때 자원을 이해하고 휴식을 취하는 데 어려움을 겪었으므로 개념을 파악하는 데 어려움을 겪는 것은 놀라운 일이 아닙니다.

나는 오늘 개념에 대한 훨씬 더 나아지고 최신의 설명이 있음을 인정하지만, 그때는 David의 기조 연설 직후에 나는 블로그 게시물 나는 다른 회의 참석자들과의 토론에서 그것을 이해하고 설명하려고 노력했다. 최근의 기사와 마찬가지로 휴식에 대한 모든 것을 알고 있다는 사실이 당연한 것으로 여겨지지 않기 때문에 도움이 될 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top