如何突出显示的字段on Rails的验证错误(How to Highlight Fields on

2019-06-27 16:22发布

如何显示表单字段高亮未能在Rails的3.1验证错误的字段? 我知道,自动生成脚手架的CSS和控制器代码来处理这个问题,但我想知道是否有手动生成的一种方式。 我已经执行过错误消息的字符串显示:@ user.errors.full_messages.each ...等,但我不能让字段以红色突出显示。 有任何想法吗?

谢谢。

Answer 1:

假设你有一个错误类在你的CSS文件中的字段:

<% if @user.errors[:name] %>
  <%= f.label :name, :class => "error" %>
<% else %>
  <%= f.label :name %>
<% end %>

这是你想要的吗?

另外 : 这里有一个关于自定义默认的ActiveRecord验证CSS部分。

编辑:( 约额外IFS)

# app/helpers/application_helper.rb

def field_class(resource, field_name)
  if resource.errors[field_name]
    return "error".html_safe
  else
    return "".html_safe
  end
end

然后:

# in your view

<%= f.label :name, :class => field_class(@user, :name) %>
<%= f.label :password, :class => field_class(@user, :password) %>
[...]

(我可能犯了一个错误在那里-我正在写在手机上-但你得到的总体思路可以以许多方式=无穷代码这一点,所以做你喜欢的方式......)



Answer 2:

现在导轨有一个很好的把戏其sleeve..When一个error发生轨道把一个div与类.field_with_errors周围的错误域。 所以,现在你可以定位类,并添加样式。

专注于你可以做输入

.field_with_errors input{
  border: 1px solid red !important;
}

这个CSS会放一个漂亮的红线围绕input要素,而important! 将覆盖现有的样式。



Answer 3:

我不得不这样做(resource.errors [FIELD_NAME]。长度> 0)来得到它的工作:

DEF field_class(资源,FIELD_NAME)如果resource.errors [FIELD_NAME]。长度> 0返回 “custom_error1” .html_safe否则返回 “” .html_safe端端



文章来源: How to Highlight Fields on Rails Validation Errors