Rails - 编辑错误消息的默认外观

时间:2013-05-29 23:35:35

标签: ruby-on-rails ruby models

对rails很新,我正在做一些简单的练习。现在我正在玩错误信息。我有几个关于这些

的默认行为的问题

1)所有错误都有前缀属性:为什么所有错误消息都以变量错误为前提?在这种情况下,它是score。如何从错误消息中删除此属性名称,只显示我的错误消息?有一个简单的方法可以做到这一点吗?

2)红色高光:为什么“得分”标签和相应的输入字段用红色标出。根据_form.html.erb文件,它们是<div class="field">所以我不明白这个红色轮廓来自哪里。有没有办法改变这个?

谢谢!

Error message

1 个答案:

答案 0 :(得分:1)

欢迎使用Rails!首先,您使用默认的脚手架。如果您使用的是rails 3.2+,那么您的样式将位于/app/assets/stylesheets。你应该有一个名为scaffold.css.scss的文件。此文件是页面上红色样式的样式。

现在,对于标记,您可以控制这些消息的显示方式。保存对象但验证失败时,该对象将具有errors对象。

@car = Car.new(params[:car])
@car.save #=> false
@car.errors.messages #=> {:make => "can't be blank", :model => "doesn't make sense"}

正如您所看到的,此errors对象上的messages方法将返回一个哈希,其中键是验证失败的属性,值是验证中的字符串消息。

这些验证在您的模型中设置,可以由您完全自定义。

class Car
    validates :make, presence: true
    validates :model, presence: true, message: "doesn't make sense"
end

因此,在您的观看中,您可以轻松地执行类似

的操作
<% if @car.errors.any? %>
   <% @car.errors.messages.each do |field, message| %>
       <!-- your custom html here -->
    <% end %>
<% end %>

所以希望这有帮助!