我使用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?
答案 0 :(得分:2)
在client_side_validations中有两个步骤来覆盖错误消息,您必须修改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();
}
}