2011-10-28 4 views
4

레일즈 3 플러그인을 만들고 있는데 컨트롤러를 통합하여 app/controllers 폴더의 "정상적인"컨트롤러로 레일스를 자동으로 고려할 것입니다. 플러그인에서 사용자 정의 컨트롤러를 가질 수있는 최선의 해결책은 무엇입니까? guides.rubyonrails.org에서 문서를 찾았지만 설명서가 변경되었으며 플러그인 개발에 더 이상 컨트롤러가 포함되지 않았습니다.Rails 3 controller from plugin

감사

답변

6

당신은 Rails::Engine에서 상속 플러그인 내에서 클래스를 정의해야합니다. 실제로 이 원하는 기능은 엔진입니다.

이 같은 클래스를 정의 :

lib 디렉토리/your_thing/engine.rb 당신은 그 플러그인 내에서 app/controllers에서 엔진의 컨트롤러를 정의 할 수 있습니다

module YourThing 
    class Engine < Rails::Engine 
    end 
end 

하고 깔끔하게 당신이 할 일을 할 또한 다음과 같이 엔진 내부에 내부에서 수행 할 수있는 경로를 정의해야합니다.

다음, 당신은 당신의 응용 프로그램 내에서 당신의 엔진을 장착해야합니다 :

mount YourThing::Engine, :at => "/" 

응용 프로그램은 다음 엔진에서 경로를 사용할 수 있습니다.

자세한 내용은 레일스 엔진 가이드 작성을 진행 중입니다. you can reference here. 더 궁금한 사항이 있으면 알려 주시면 가이드에서 답변 드리겠습니다.

+0

대단히 감사합니다. 나는 이것을 지금 시도 할 것이다. –

+0

--mountable 옵션을 사용하여 플러그인 생성기를 사용하여 엔진을 만들려고했지만 engine.rb 파일이 만들어지지 않았습니다. 그 이유는 무엇일까요? 레일 버전 문제? –

+1

@Mika : Rails 3.1을 실행해야합니다. –