2011-10-06 3 views
8

Ruby on Rails를 설치하고 posts이라는 스캐 폴드를 만들었습니다. RoR이 컨트롤러 및 기타 필요한 파일을 생성했습니다.레일에서 루비의 경로를 변경하는 방법은 무엇입니까?

posts_controller에 새 방법을 만들었지 만 액세스 할 수 없습니다. 컨트롤러에있는 다른 메서드를 살펴보고 /posts/[MY POST ID]/[MY METHOD NAME]에 액세스해야하는 것처럼 보입니다.

컨트롤러에 내 맞춤법 hello을 만든 것으로 가정하고 어떻게 액세스합니까?

나는 routes.rb을 보았지만 구성이 없습니다.

업데이트 :

내가 수동으로 routes.rb에서 구성 할 수 있습니다 이해하지만 어떻게 다른 모든 방법이 작동합니까? 예를 들어, 컨트롤러 "posts_controller.rb"에 "edit"및 "update"메서드가 있습니다. 이 두 가지 방법은 경로를 구성하지 않고 어떻게 작동합니까?

# GET /posts/1/edit 
    def edit 
    @post = Post.find(params[:id]) 
    end 

/posts/[0-9]/edit 패턴과 일치하는 구성을 찾을 수 없습니다. http://guides.rubyonrails.org/routing.html

아니 모든를 :

match 'posts/hello' => 'posts#hello'

가능한 레일 3.X에서

답변

9

찾고있는 설명서는 Rails Routing From the Outside In입니다. 이 글을 읽었 으면 Rails가 요청을 받아 컨트롤러에있는 메소드를 가리키는 모든 것을 이해할 것이다.

3

은 example.com/posts/hello

4

이것은 당신에게 좋은 머리 노선에 시작을 줄 것이다 메서드는 자체 경로를 가지며 레일은 나머지 원칙에 따라 만들어지고 비계는 인덱스, 쇼 등의 경로를 따르는 사후 컨트롤러에서 메서드를 만듭니다.

메소드에 경로를 추가하도록 강요 할 수 있지만 실제로는 규칙을 따르는 것이 훨씬 쉽기 때문에 실제로는 그렇게 할 필요가 거의 없습니다.

5

routes.rb에 대한 경로를 추가해야합니다. 예를 들어 :

# Previous routes 
# resources :posts 

# Updated routes 
resources :posts do 
    get "hello", :on => :member 
end 

Rails guide about routing에서보세요, 당신이 레일 라우팅을 이해하는 데 도움이됩니다.

1

게시판을 사용하여 게시글을 만들었을 때 파일에 resources :posts 줄이 추가되었습니다. 이 행은 생성 된 모든 컨트롤러 작업에 대한 경로를 구성합니다. 갈렙이 위에서 언급 한 것처럼, 모든 행동이 전용 경로를 갖는 것은 아닙니다. 레일은 또한 HTTP 메소드를 고려하기 때문에 단일 경로는 여러 액션에 대응할 수 있습니다. 예를 들어, /posts HTTP 메서드가있는 GET 경로는 컨트롤러 동작 index에 해당하고 HTTP 메서드 PUT과 동일한 경로는 컨트롤러 동작 update에 해당합니다. 콘솔에서 rake routes을 실행할 때 이러한 연결을 볼 수 있습니다.Jordan과 Caleb는 Rails Guides를 잘 읽고 경로를 이해하는 데 도움이된다고 동의합니다.

+0

// 답변 해 주셔서 감사합니다. ROR은 한 줄의 코드 (리소스 : 게시물)를 읽는 것만으로 경로를 어떻게 구성합니까? – Moon

+0

레일스가 어떻게 동작 하는지를보기 위해 소스 코드를 보지 않았지만, '리소스'를 사용할 때 레일스는 7 개의 경로를 설정합니다. 위의 가이드 2.2 섹션을 확인하십시오. http://guides.rubyonrails.org/routing.html – John

+0

경로의 기본 사항에 대한 더 자세한 설명은이 사이트보다 없습니다. https://www.youtube.com/watch? v = g3SuV-A9bak & 인덱스 = 3 &리스트 = PLAC08CE3187BC75F1 – Mauddev

관련 문제