新手问题 如何自定义错误消息提示

puras · 2012年05月30日 · 最后由 puras 回复于 2012年05月30日 · 3377 次阅读

查了一些资料 ,说是可以通过修改 config/application.rb 文件来实现. 在该文件中增加:

config.action_view.field_error_proc = Proc.new do |html_tag, instance|
    errors = Array(instance.error_message).join(',')
    %(#{html_tag}<span class="help-inline">&nbsp;#{errors}</span>).html_safe
end

全是现在遇到一个小问题。在页面中,代码如下:

 <div class="control-group">
    <%= f.label :username, '姓名', :class => 'control-label' %>
    <div class="controls">
    <%= f.text_field :username, :class => 'text_field' %>
    </div>
</div>

如果这个数据在提交的时候有错误,会在姓名和输入域后都增加错误提示信息. 如果将 label 修改为纯 HTML 的代码:

<label class="control-label" for="username">姓名</label>

后,就可以正常显示了. 怎么在 application.rb 中将 label 标签给剔除呢?

唔。修改了一下 application.rb 的代码,暂时可用了。不知道还有没有更好的实现方式咧:

config.action_view.field_error_proc = Proc.new do |html_tag, instance|
    errors = Array(instance.error_message).join(',')
    is_label = html_tag.index('<label ') && html_tag.index(' for=')
    if is_label
         %(#{html_tag}).html_safe
    else
        %(#{html_tag}<span class="help-inline">&nbsp;#{errors}</span>).html_safe
    end
end
需要 登录 后方可回复, 如果你还没有账号请 注册新账号