1

Ruby on Rails 3.0.9를 사용하고 있으며 RoR 명명 규칙에 따라 클래스 이름에서 컨트롤러 이름을 작성하고 싶습니다. 예를 들어 Articles::Comment 클래스가있는 경우 articles/comments 문자열을 검색하고 싶습니다.RoR 규칙에 따라 클래스 이름에서 컨트롤러 이름 검색

개발자가 내부적으로 이러한 규칙을 처리하기 위해 만든 RoR 메서드가있을 수도 있지만 그 사실을 모릅니다.

위의 예에서 컨트롤러 이름을 검색하려면 어떻게해야합니까?

답변

3

당신은 밑줄 방법을 찾고 있습니다. More info here.

"Articles::Comment".underscore 

또는, 당신은 컨트롤러 클래스 자체를 가지고 있다면, 그것은 다음과 같이 될 것이다 :

Articles::Comment.name.underscore 

편집 경로로

는, 그들은에서 한 조각을 구축 심지어 네임 스페이스 때.

map.resources :articles do |articles| 
    articles.resources :comments 
end 

은 무엇 레일 할 것입니다 것은, 첫째 : 당신은 같은 것을 할 때 다음

"articles". classify # which yields "Article" then rails is going to append "Controller" to it 

는이 같은 얻을 "의견"을 할 것,하지만이 하나에 가고 "/ articles"아래에 라우팅해야합니다. Rails는 내부 리소스의 네임 스페이스를 지정하지 않으므로 컨트롤러는 CommentsController가 아니라 Articles :: CommentsController가되어야합니다.

만 당신은 명확 레일 클래스를 네임 스페이스 것입니다, 뭔가를 네임 스페이스 :

map.namespace :admin do |admin| 
    admin.resources :articles # will require controller "Admin::ArticlesController" 
end 

나는 지금 명확하게 희망.

+0

코드를 사용하면 'pluralize'메서드도 호출해야합니다 ... 그러나 RoR이 이러한 명명 규칙을 내부적으로 처리하는 방법은 무엇입니까? – Backo

+0

내가 당신의 질문을 잘못한 것처럼 보입니다, 나는 복수형을 인식하지 못했습니다. 이것은 레일스가 articles_comment_path 에서처럼 경로에 대한 이름을 생성하는 방법입니다. 노선에 각 조각은 그것의 자신의 이름, 그게 tableize'd 클래스 이름입니다. –

+0

컨트롤러 명명 규칙을 다루기 위해 업데이트되었습니다. –

관련 문제