ruby-on-rails - Redmine 插件仅出现在某些项目菜单中

标签 ruby-on-rails redmine redmine-plugins

我的 Redmine (v2.0.3) 工作正常。它现在显示在每个项目的项目菜单中,但我不知道如何只为选定的项目激活它。例如。仅适用于将项目自定义字段设置为特定值的项目。我创建了自定义字段并找出了数据的存储位置。但是我如何告诉 Redmine 何时在项目菜单中显示插件?

我确实遇到了使用 :if 来指定 proc 的可能性,但该 proc 不允许我调用我的插件创建模型之一的方法。
例如。我创建了一个名为 Param 的模型,我想调用方法 Param.check_to_display。
但显示错误信息

ActionView::Template::Error (undefined method 'check_to_display' for Param(....):Class)

我的 init.rb 说:
menu :project_menu, :info, {:controller=>'info', :action=>'index'}, :caption=>'Ticker', :after=>:activity, :param=>:project_id, :if=>Proc.new{||Param.check_to_display()}

最佳答案

多么尴尬,一个简单的错误。我将方法 check_to_display 定义如下:

def check_to_display

显然它应该是
def self.check_to_display

对于那些对总代码感兴趣的人:
class Param < ActiveRecord::Base
  unloadable

  def self.check_to_display(p)
    cf = CustomField.where("type='ProjectCustomField' and name='THE_FLAG'").first
    return false if cf.nil?
    return false if p.nil?
    cv = CustomValue.where("customized_type='Project' and customized_id=? and custom_field_id=?",p.id,cf.id).first
    return false if cv.nil?
    return false if cv.value.nil?
    cv.value.strip!
    return cv.value != ""
  end
end

不要忘记,init.rb 应该如下所示:
menu :project_menu, :info, {:controller=>'info', :action=>'index'}, :caption=>'Ticker', :after=>:activity, :param=>:project_id, :if=>Proc.new{|p|Param.check_to_display(p)}

关于ruby-on-rails - Redmine 插件仅出现在某些项目菜单中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11722678/

相关文章:

ruby-on-rails - 在 Rails 中使用多选列表

ruby-on-rails - 使用环境变量配置 Redmine 电子邮件

redmine - 将 git commit 消息连接到 redmine 问题

ruby-on-rails - Redmine Hook 的验证问题

Redmine 上的文档 Mng : Anyone use DMSF plugin or find an easy way to manage docs in the Files tab with a 'wiki' as a front end?

javascript - ROR 生成的 html 中附加到 prototype.js 的数字表示什么意思

ruby-on-rails - 如何定义动态变量并将其分配给rails中的某个值

redmine - 有没有适用于 Redmine v2 的待办事项插件?

ruby-on-rails - 在 Rails 中构建多重过滤器的最佳方法

redmine - 通过 API 将文件附加到 GitHub 中的问题