2010-06-10 3 views
4

Я пишу драгоценный камень, который предоставляет помощники для просмотра. HTML, который я хочу вставить через помощник, достаточно сложный, чтобы лучше записать его в файле _partial.html.erb. Как получить путь представления gem в файле load_path приложения?Rails Custom Plugin/Gem with Partials

Примечание: единственный драгоценный камень, который я обнаружил, что делает что-то вроде этого, является Devise. Когда вид не может быть найден, Rails печатает путь нагрузки, который (на моей машине) выглядит как:

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

Если поставить «приложение» каталог в корневой каталог вашего плагина, Rails добавит приложение/вид на пути просмотра по умолчанию.

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

Затем вы можете сделать парциальное от вспомогательного метода вашего плагина с:

render :partial => "plugin_name/my_partial" 

Обратите внимание, что Rails не делает мнение доступно по умолчанию в тестовой среде плагина. Чтобы включить их, добавьте следующее в test/test_helper.rb:

+0

Не похоже, чтобы это работало на жизнь меня. У меня есть драгоценный камень (локально прямо сейчас) под названием «admin_site», который имеет структуру каталогов, показанную выше, с «admin_site» вместо «plugin_name»; Я установил его на локальный сайт Rails, используя Bundler (указывающий на жемчужину локально, но это так), но запрос шаблона в 'admin_site/common/index' (который находится там, где он находится) не работает с помощью ActionView :: MissingTemplate', и я не вижу свой драгоценный камень в списке путей поиска шаблона (я получаю только те виды сайта Rails, представления Devise и корень моего сайта). –

+1

Нашел это ... Мне пришлось включить файл '.rb', который является главной точкой входа для драгоценного камня с классом класса Rails :: Engine'. –

+0

Удивительно, какая версия Rails у вас была. Имея дьявола времени с аналогичной проблемой (мой Rails 2.3.5 не находит взгляды в gem, я развиваюсь в /app/views и добавляю свой класс Engine ilasno