Пользовательский плагин Rails / Gem с частями - PullRequest
4 голосов
/ 10 июня 2010

Я пишу драгоценный камень, который предоставляет помощников для представлений. HTML-код, который я хочу вставить с помощью помощника, достаточно сложен, и я предпочел бы записать его в файл _partial.html.erb. Как мне получить путь к представлению драгоценного камня, включенный в путь загрузки приложения?

Примечание: единственный драгоценный камень, который я нашел, который делает что-то подобное, это 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"

Как Devise это делает?

Моя жемчужина: http://github.com/jrmurad/SortableNestedSet Придумайте драгоценный камень: + http://+github.com/plataformatec/devise

1 Ответ

4 голосов
/ 26 августа 2010

Если вы поместите каталог 'app' в базовый каталог вашего плагина, Rails по умолчанию добавит app / views в путь представления.

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

Затем вы можете визуализировать частичное из вспомогательного метода вашего плагина с помощью:

render :partial => "plugin_name/my_partial"

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

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