2

client_side_validation gem を使用していますが、質問がありclient_side_validation.rb ます 。

ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
  unless html_tag =~ /^<label/
    %{<div class="field_with_errors">#{html_tag}<label for="#{instance.send(:tag_id)}" class="message">#{instance.error_message.first}</label></div>}.html_safe
  else
    %{<div class="field_with_errors">#{html_tag}</div>}.html_safe
  end
end

出力には次のものがあります:

<div>
  Name:
   <br>
   <div class="field_with_errors">
     <input id="user_username" type="text" size="30" name="user[username]"data-validate="true">
     <label class="message" for="user_username">Only letters allowed</label>
   </div>
</div>

ラベルを使用したくない:

<label class="message" for="user_username">Only letters allowed</label>

どうすればこのようなものを得ることができますか:

<div class="message">Only letters allowed</div>

私は自分のrbファイルに入れてみました:

ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
  unless html_tag =~ /^<label/
    %{<div class="field_with_errors">#{html_tag}<div class="message">#{instance.error_message.first}</div></div>}.html_safe
  else
    %{<div class="field_with_errors">#{html_tag}</div>}.html_safe
  end
end

divサーバーを再起動します-ただし、この場合、クラスで空のみを受け取りましたmessage

助けてください.. 標準ラベルを Div に変更するにはどうすればよいですか?

4

1 に答える 1

2

client_side_validations でエラー メッセージをオーバーライドするには 2 つの手順があります。ActionView::Base.field_error_proc を変更するか、rails.validations.coffee (または JS) のみを変更する必要があります。

あなたがやろうとしていることについては、field_error_proc の変更は必要ありません。次のように実行できます。

window.ClientSideValidations.formBuilders['ActionView::Helpers::FormBuilder'] = {
  add: function(element, settings, message) {
    $(element).after($('<div>').attr('class', 'message').html(message));
  },
  remove: function(element, settings) {
    $(element).next().remove();
  }
}
于 2012-11-18T21:53:36.433 に答える