我一直在关注Redmine Plugin Tutorial并阅读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错误。请求的控制台输出为here,但看起来并不实用。
如果我在view_issues_form_details_bottom
中定义一个名为MailSettingIssueHooks
的方法,并返回一个正确呈现的字符串。
render_on
关键字如何决定在哪里查找部分内容,以及如何让它起作用?
答案 0 :(得分:5)
当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
目录中的目录名相同。