2012-07-30 84 views
4

我得到了Redmine(v2.0.3)的工作。它現在顯示在每個項目的項目菜單中,但我無法弄清楚如何只爲選定的項目激活它。例如。僅適用於將項目自定義字段設置爲特定值的項目。我得到了創建的自定義字段並計算出數據的存儲位置。但是,我該如何告訴Redmine何時或不在項目菜單中顯示插件?Redmine的插件僅在某些項目菜單中出現

我確實遇到過使用的可能性:如果指定一個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()} 

回答

2

多麼尷尬,一個簡單的錯誤。我定義的方法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)} 
相關問題