1

Rails 新手,我正在做一些简单的练习。现在我正在玩弄错误消息。我对这些的默认行为有几个问题

1)所有错误都有属性前缀:为什么所有错误消息都以导致验证错误的变量为前缀?在这种情况下,它是score. 如何从错误消息中删除此属性名称,并仅显示我的错误消息?必须有一个简单的方法来做到这一点?

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

谢谢!

错误信息

4

1 回答 1

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"}

如您所见,此错误对象上的 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 %>

所以希望这会有所帮助!

于 2013-05-29T23:47:33.163 回答