默认情况下,simple_form会以这种形式生成错误消息:
<span class="error">"error_text"</span>
但我需要的是:
<span class="error" title="error_text"></span>
所以它只是一个带背景图片的跨度,当你将鼠标悬停在它上面时显示错误信息
我研究了这个(Customize error message with simple_form)问题的答案,但它似乎没有包含我需要的内容:接受的答案建议自定义config/initializers/simple_form.rb
。但我无法确定你是如何从那里做到的,它只是允许更改包含错误消息的标签,它的类以及要显示的消息。
答案 0 :(得分:2)
这是我的同事(有经验的人)处理这个问题的方式:
Added custom_errors.rb to lib/simple_form
module SimpleForm
module Components
module CustomErrors
include SimpleForm::Helpers::HasErrors
def custom_error
enabled_error
end
def error_tag
options[:error_tag] || SimpleForm.error_tag
end
def error_text
if options[:error_prefix]
options[:error_prefix] + " " + errors.send(error_method)
else
errors.send(error_method)
end
end
def error_method
options[:error_method] || SimpleForm.error_method
end
def error_html_options
html_options_for(:error, [SimpleForm.error_class])
end
protected
def enabled_error
# We need '<span title="Blah!"></span>'
template.content_tag(error_tag, '', error_html_options.merge({:title => error_text})) if has_errors?
end
def disabled_error
nil
end
def errors
@errors ||= (errors_on_attribute + errors_on_association).compact
end
def errors_on_attribute
object.errors[attribute_name]
end
def errors_on_association
reflection ? object.errors[reflection.name] : []
end
end
end
module Inputs
class Base
include SimpleForm::Components::CustomErrors
end
end
end
答案 1 :(得分:0)
如果你无法自定义simple_form来做你需要的事情。您可以使用一些简单的javascript(jquery示例)来处理这个问题:
//after the page loads, put the span's text in the title attribute and clear its text.
$(function(){
var $eSpan = $('.error:first');
$eSpan.attr('title', $eSpan.text()).empty();
})