Части плагина Redmine не найдены

Я следил за руководством по подключаемому модулю Redmine и читал страницу Hooks, но я все еще не могу заставить части своих плагинов отображать, используя ключевое слово render_on или иным образом .

Вот где я размещаю свои части:

app
└── views
    ├── issues
    │   └── _issue_mail_settings_form.html.erb
    └── projects
        └── _mail_settings_form.html.erb

Вот мой класс с ключевым словом render_on, который находится в каталоге lib:

class MailSettingIssueHooks < Redmine::Hook::ViewListener
  render_on :view_issues_form_details_bottom,            
      :partial => "issues/issue_mail_settings_form"                                                                                                
end

В init.rb я просто require 'mail_setting_issue_hooks'.

Если я загружаю Redmine таким образом, я не могу просмотреть страницу на предмет каких-либо проблем — я просто получаю ошибку 404. Консольный вывод для запроса находится здесь, хотя он не выглядит полезным.

Если я определяю метод с именем view_issues_form_details_bottom в MailSettingIssueHooks и он возвращает строку, которая отображается правильно.

Как ключевое слово render_on определяет, где искать частичные фрагменты, и как заставить его работать?


person polm23    schedule 09.04.2013    source источник


Ответы (1)


Когда Redmine загружает плагины, он добавляет каталог представлений по умолчанию для каждого — app/views — в глобальный путь представления Rails. Загвоздка в том, что он не использует фактический каталог на диске — предполагается, что подключаемый модуль расположен plugins/<name>, где <name> — это аргумент, который вы используете для Redmine::Plugin.register.

Это означает, что если ваш init.rb выглядит так:

Redmine::Plugin.register :cool_stuff do
...

Но каталог вашего плагина на самом деле redmine_cool_stuff, код загрузится и выполнится, но представления не будут найдены.

Решение. Убедитесь, что аргумент Plugin.register совпадает с именем вашего каталога в каталоге redmine plugins.

person polm23    schedule 10.04.2013