2010-12-15 2 views
1

난 그냥 내 맥 OS X의구성 routes.rb 3.0

을에 레일 3.0.3를 사용하여 이동 컨트롤러를 적절한 위치에 놓습니다. 내가 greet라는 동일한 컨트롤러의 방법/액션을 생성하고 난에서 브라우저를 통해이 액세스하려고 할 때 :

http://localhost:3000/testing/greet 

이 말을 나에게 오류를 준 :

Routing Error 

No route matches "/testing/greet" 

을하지만 난을 추가하는 경우 내 routes.rb 파일에 라인을 다음 잘 작동하지만

get 'testing#greet' 

, 난 내 응용 프로그램에서 각각의 모든 방법에 대해 위의 라인을 추가 할 수 없습니다.

이 문제를 해결하는 방법을 안내해주세요.

감사합니다.

답변

2

그는 너무 복잡하지 않습니다.

가정 테스트는 루트에, resoucedful입니다 :

resources :testings do 
    # for individual /testing/1/greet 
    member do 
    get 'greet' 
    end 

    # on the collection 
    collection do 
    get 'greet' 
    end 
end 
+0

질문에 대한 간단한 답은 다음과 같습니다. "모든 경로가 정의되어야 함" – sethvargo

+0

답변을 주신 Seth에게 감사드립니다.하지만 내 routes.rb 파일의 모든 경로를 계속 정의하면 문제가 복잡해지며 routes.rb 파일이 좋지 않을 것입니다. 어쨌든, 당신의 대답에 감사드립니다. 나는 이것을 알아 냈고 곧 답변을 게시 할 것입니다. –

+0

나는이 질문을 되돌아보고 매우 순진하다고 느낍니다. 2 년 전부터 - 레일즈와 루비의 프로입니다 :) –

0

라우팅이 복잡해졌습니다. 계몽을위한 Routing Guide을 읽으십시오.

+1

복잡한 일이 생겨서 죄송합니다. 답을 얻기 위해서는 routes.rb 파일에 다음과 같이 간단한 라인이 필요합니다 : match : controller/: action'' –

-1

는 3.0 레일 레일 2.X에서 오는 경우, 당신 routes.rb 파일은 아마이 줄 누락되었습니다 레일에서

match ':controller/:action' 

을 2.x이 줄은 다음과 같습니다.

map.connect ':controller/:action' 

Routing API 및 int Action Dispatch의 roduction을 사용하면 routes.rb 파일의 첫 번째 행을 추가하여 모든 메소드를 자동으로 매핑해야합니다.

추신 : 위의 라우팅을 덮어 써야하는 경우 레일스 라우팅의 우선 순위가 아래쪽으로 내려 가기 때문에이 줄 위에 라우팅 명령을 선언해야합니다.

감사합니다.

+1

이 캐치 올 경로는 모두 권장하지 않으며 권장되지 않습니다. http://guides.rubyonrails.org/routing.html#resource-routing-the-rails-default에서 자세하게 설명 된대로 REST 스타일의 경로가 있습니다. –

+0

안녕하세요 브라이언, 그럴 수도 있습니다. 그러나 Rails 2에서 Rails 3로 전환 한 이래로 나는 Rails 2에서 이미 가지고 있던 것을 놓치고있었습니다.레일즈 3 표준을 확인하기 위해 모든 가이드와 API 문서를 검토하고있다. 그러나 이제는 이것이 제가 Rails 3을 테스트하기 위해 찾고자했던 것입니다. 자, 이제 그 사용이 중단 된 것을 알기 때문에 Rails 3에서 연마 된 버전이 무엇인지 살펴보고 Production에서 사용할 것입니다. 다시 한번 감사드립니다! –