2

我一直在关注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_bottomin的方法MailSettingIssueHooks并返回一个字符串,那么它会正确呈现。

关键字如何render_on决定在哪里寻找部分,我怎样才能让它工作?

4

1 回答 1

6

Redmine 加载插件时,会将每个插件的默认视图目录添加app/views到全局 Rails 视图路径中。问题是它不使用磁盘上的实际目录 - 它假定插件位于plugins/<name><name>您使用的参数在哪里Redmine::Plugin.register

这意味着,如果您init.rb看起来像:

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

但是你的插件的目录实际上是redmine_cool_stuff,代码会加载并执行,但不会找到视图。

解决方案:确保参数 toPlugin.register与您在 redmine 目录中的目录名称相同plugins

于 2013-04-10T03:42:40.737 回答