2010-06-10 3 views
4

나는 뷰어를 위해 헬퍼를 제공하는 보석을 쓰고있다. 도우미를 통해 삽입하려는 HTML은 복잡하기 때문에 _partial.html.erb 파일에 작성해야합니다. 애플리케이션의 load_path에 포함 된 젬의 뷰 경로를 얻으려면 어떻게해야합니까?Rails Custom Plugin/Gem with Partials

참고 : 내가봤을 때 발견 한 유일한 보석은 Devise입니다.

Missing partial sortable_nested_set/tree with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>[:html], :locale=>[:en, :en]} in view paths "/home/jason/VirtualRestaurant3/app/views", "/home/jason/.rvm/gems/ruby-1.9.2-preview3/gems/devise-1.1.rc0/app/views" 

가 고안 그것을 어떻게합니까 : 뷰를 찾을 수없는 경우, 레일처럼 보이는 (내 컴퓨터)에 부하 경로를 인쇄?

내 보석 : http://github.com/jrmurad/SortableNestedSet 고안 보석 : + http://+github.com/plataformatec/devise

답변

3

당신이 플러그인의 기본 디렉토리에있는 '응용 프로그램'디렉토리를 넣어 경우, 레일이 추가됩니다 응용 프로그램/기본적으로보기 경로보기. 레일 플러그인 테스트 환경에서 기본적으로 뷰를 사용할 수 있도록하지 않습니다

render :partial => "plugin_name/my_partial" 

참고 :

. 
├── app 
│   └── views 
│    └── plugin_name 
│     └── _my_partial.html.erb 

그럼 당신은 당신의 플러그인의 도우미 메서드에서 부분을 렌더링 할 수 있습니다. 포함 시키려면 test/test_helper.rb를 테스트하기 위해 다음을 추가하십시오.

ActionController::Base.prepend_view_path File.dirname(__FILE__) + "/../app/views" 
+0

나는 내 삶을 위해 작동하지 않을 것 같습니다. 'plugin_name' 대신'admin_site '를 사용하여 위에 표시된 디렉토리 구조를 갖는'admin_site '라고 불리는 보석을 얻었습니다. 나는 Bundler를 사용하여 로컬 Rails 사이트에 설치했는데 (보석을 로컬로 가리키고있다.),'admin_site/common/index' (그것이 보석에있는 곳)에 템플릿을 요청하면'ActionView :: MissingTemplate'을 사용하고 템플릿 검색 경로 목록에 내 보석이 표시되지 않습니다 (필자의 Rails 사이트보기, Devise의보기 및 내 사이트의 루트 만 표시). –

+1

찾아 냈다. 나는'class Engine

+0

비슷한 문제가있는 악마가있는 레일즈의 버전을 궁금해합니다. (레일즈 2.3.5는 내가 개발중인 보석에서보기를 찾지 못했습니다 (/app/views). 'class 엔진 ilasno