2012-09-12 3 views
1

나는 루트에 관한 깔끔한 루비를 레일 tutorial에 따라 가고있다. 라우팅이 어떻게 그렇게 많이 알고 있는지 궁금합니다.라우팅은 어떻게 그렇게 많이 알고 있습니까?

posts_controller라는 하나의 컨트롤러와 포스트 모델이 있습니다. routes.rb 파일에서, 나는이 자동으로 게시물과 관련된 모든 컨트롤러의 행동에 대한 적절한 라우팅을 만들고, 지금까지 내가 그것을 이해로

# config/routes.rb 
resources :posts 

을 추가했다. 지금까지, 내 ​​posts_controller에 단 하나 개의 방법이 있습니다

# app/controllers/posts_controller.rb 
def index 

end 

그러나 이상하게도, 나는

$ rake routes 

을 실행할 때 그것은 나에게주는이 모든 : 라우팅 메커니즘을 수행하는 방법

posts GET /posts(.:format)   posts#index 
      POST /posts(.:format)   posts#create 
new_post GET /posts/new(.:format)  posts#new 
edit_post GET /posts/:id/edit(.:format) posts#edit 
    post GET /posts/:id(.:format)  posts#show 
      PUT /posts/:id(.:format)  posts#update 
      DELETE /posts/:id(.:format)  posts#destroy 

내가 게시물을 만들고 업데이트 할 수 있기를 원하는 것을 말하지 않고 너무 많이 알아? Ruby on Rails guide, Resource Routing: the Rails Default에서

답변

3

을 행동과는 아무 상관이 없습니다 당신이 정의했습니다. 그것은 단순히 당신이 당신의 컨트롤러에 필요할 수있는 편안한 루트를 모두 만듭니다.

당신이 그것을 볼 수 있듯이

가 생성 : 색인, 새로운, 편집, 쇼 생성, 업데이트 및 존재하지 않는 행동에 대한 경로를 생성 이후 실제로 비지의

파괴한다.

필요한 작업으로 만 제한하는 방법의 예.

resources :posts, :only => [:show, :index] 
+0

아, 그게 뭔가 설명합니다. 그래서 그것을 사용하는 것이 현명하지 않습니까? 대신 무엇을 사용 하시겠습니까? – weltschmerz

+0

나는 이것을 사용하지 말아야 함을 의미하지는 않습니다. 단지 기본적으로 필요하지 않은 경로를 생성합니다. 필요한 액션을 어떻게 제한 할 수 있는지 보여주기 위해 코드를 업데이트했습니다. – weexpectedTHIS

+0

신난다, 고마워! – weltschmerz

2

:

리소스 라우팅은 빠르게 주어진 수완 컨트롤러에 대한 일반적인 경로 모두를 선언 할 수 있습니다. 인덱스에 대한 별도의 경로를 선언하는 대신 작업 표시, 새로 만들기, 편집, 만들기, 업데이트 및 삭제 작업을 수행하는 수완이있는 경로는 단일 코드 줄로 선언합니다.

쉽고 빠르게 경로를 정의하는 것은 레일 방식입니다. 그것은 귀하의 컨트롤러에있는 메서드를 검사하지 않습니다.

어떻게 작동하는지 이해하고 있어야합니다. 즉, 모든 경로를 원하고 만 인덱스가 생성 및 업데이트, 당신이해야 할 선택이 가능하고 싶지 않은 경우 말했다되는 "자원"을 사용

resources :posts, :only => [:index, :create, :update] 
관련 문제