2

ビューのラベルの後にマークを追加するために、モンゴイド モデルで必要なフィールドを検出しようとしています。これは私が使用している初期化子です。Mongoid の唯一の違いはMongoid::Validations::PresenceValidatorであり、ActiveRecordActiveModel::Validations::PresenceValidatorでは であるため、おそらくモンゴイド関連の質問ではないことに注意してください (?):

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

また、lable.required にアスタリスクを含めるために、このスタイルを使用しています。

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

ラベルに必要なクラスを手動で設定すると、正常に表示されます。問題は、FormBuilder がラベルをまったく変更しておらず、マークが表示されないことです。ファイルはまったく使用されていないようです。イニシャライザとして含めていますが、単純なイベントを書き込むイベントputs "I am here..."はサーバー コンソールに表示されません。

私は何が欠けていますか?

事前にご回答いただきありがとうございます。

4

2 に答える 2

1

私は同じ問題を抱えていました。おそらくあなたのレールのバージョンかもしれません。

「Rails 4 では、検証クラスが ActiveRecord に変更されました。そのため、ActiveModel::Validations::PresenceValidator を ActiveRecord::Validations::PresenceValidator に置き換えるとうまくいくはずです。」

ソース: http://blog.pothoven.net/2012/10/self-marking-required-fields-in-rails.html

于 2014-01-07T15:35:04.567 に答える
0

延長してみる

module ActionView::Helpers::FormHelper
于 2013-05-17T10:32:57.007 に答える