2013-05-17 71 views
2

我試圖在mongoid模型中檢測必填字段,以便在視圖中的標籤後添加標記。這是我正在使用的初始化器。請注意,對於Mongoid唯一不同的是Mongoid::Validations::PresenceValidator,在ActiveRecord的將是ActiveModel::Validations::PresenceValidator,所以也許它不是一個mongoid相關的問號(?):用星號自動標記必填字段,不起作用

class ActionView::Helpers::FormBuilder 
    alias :orig_label :label 

    # add a 'required' CSS class to the field label if the field is required 
    def label(method, content_or_options = nil, options = nil, &block) 
    if content_or_options && content_or_options.class == Hash 
     options = content_or_options 
    else 
     content = content_or_options 
    end 

    if object.class.validators_on(method).map(&:class).include? Mongoid::Validations::PresenceValidator 

     if options.class != Hash 
     options = {:class => "required"} 
     else 
     options[:class] = ((options[:class] || "") + " required").split(" ").uniq.join(" ") 
     end 
    end 

    self.orig_label(method, content, options || {}, &block) 
    end 
end 

而且,我使用這種風格,以包括在標籤中需要星號:

/* add required field asterisk */ 
label.required:after { 
    content: " *"; 
} 

如果我手動在標籤中設置所需的類,它會顯示成功。問題是FormBuilder根本沒有修改標籤,也沒有顯示標記。看起來這個文件根本沒有被使用,我將它作爲一個初始化程序包含在其中,但事件寫着一個簡單的puts "I am here..."它沒有顯示在服務器控制檯中。

我錯過了什麼?

非常感謝您的回覆。

+0

不是它::的ActionView ::助手錶單助手? – 2013-05-17 10:26:24

回答

0

延伸

module ActionView::Helpers::FormHelper 
+1

感謝您的回答!我首先以爲我是個笨手笨腳的人,這件容易的事!但後來我看到它不起作用,它說'FormHelper不是一個類(TypeError)'。無論如何,我見過很多使用FormBuilder的例子,像這樣:https://gist.github.com/jordanandree/9d6812f0c99a20cacb2c – josal

+0

這不起作用:( –