2009-11-26 2 views
3

저는 처음으로 프로젝트에서 Ruby를 사용했기 때문에 여전히 로프를 배우는 중입니다.Ruby on Rails에서 맵핑 된 리소스와 이름이 지정된 경로가 거래와 어떤 관계가 있는지 알 수 있습니까?

나는 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 

이 멋진 좀 "has_many"와 "전용"형 해시 그들을 걸려 매개 변수를 가지고 있는데이 때 정확히 작동하지 수 그 (것)들을 이용하기 위하여 가정되고, 이득은 무엇이다.

나를 똑바로 세울 수 있습니까?

답변

9

명명 된 경로는 바로 그 것이다. 이름을 첨부 한 경로이므로 URL을 생성 할 때 쉽게 참조 할 수 있습니다. 무엇보다도 모호성을 없앨 수 있습니다.

기본적으로 자원은 조작 할 경로가있는 '물건'입니다. '섹션'이 리소스라는 것을 정의하면 "모든 섹션을 가져 오는 경로를 원합니다. 새 섹션을 추가하는 경로를 원합니다. 기존 섹션을 편집 할 경로를 원합니다." 섹션을 삭제할 경로를 원합니다. " 그런 종류의 일. 이 경로는 index, new, edit 등과 같은 표준화 된 메소드 이름을 가리 킵니다. 각 경로에는 이름에 따라 할당 된 이름이 있습니다. 이제 'edit_section'이라는 경로가 있습니다.

:has_many 매개 변수를 사용하면 특정 종류의 것에 하위 기능이 있다고 말할 수 있습니다. 예를 들어 map.resources :sections, :has_many => [:questions]이라고 말할 수 있습니다. 즉, 질문은 섹션에 속하며 이는 URL과 경로에 반영됩니다. 너는 '/sections/27/questions/12'과 같은 URL을 얻을 것이고 'section_questions' 같은 이름의 경로를 얻을 것이다.

:only 매개 변수는 "이러한 동작에 대한 경로 만 생성합니다"라고 표시합니다. 편집이나 삭제가 아닌 항목의 나열,보기 및 추가 만 허용하려는 경우 사용할 수 있습니다.

+1

위대한 설명. – Blounty

1

솔직히 Rails Routing Guide은 평범한 말씨에 대해 좋은 설명을 제공합니다. 리소스 경로 == RESTful 경로라는 것을 알기 만하면됩니다.

0

DHH가 2006 년 첫 번째 RailsConf에서 Rails 커뮤니티에 소개했을 때 우리 모두는 리소스와 REST를 이해하는 데 어려움을 겪었으므로 개념을 이해하는 데 어려움을 겪지는 않습니다.

오늘의 컨셉에 대한 더 나은 최신 설명이 있지만, 당시 데이비드의 기조 연설 직후 나는 blog post으로 편지를 쓰면서 나는 다른 컨퍼런스 참석자와의 토론에서 이해하려고 노력했다. 그것을 설명하십시오. 최근 기사에서 알 수 있듯이 REST에 대한 모든 것을 알고 있다는 것은 당연한 것입니다.

관련 문제