在我的 Rails 应用程序中,我在活动记录对象中使用验证助手,它们很棒。当出现问题时,我会在我的网页上看到标准的“3 个错误禁止保存此 foobar”以及个别问题。
有什么办法可以用我自己的方法覆盖这个默认消息吗?
在我的 Rails 应用程序中,我在活动记录对象中使用验证助手,它们很棒。当出现问题时,我会在我的网页上看到标准的“3 个错误禁止保存此 foobar”以及个别问题。
有什么办法可以用我自己的方法覆盖这个默认消息吗?
error_messages_for
您用来显示错误的帮助程序接受一个:header_message
允许您更改默认标题文本的选项。如:
error_messages_for 'model', :header_message => "You have some errors that prevented saving this model"
RubyOnRails API是您的朋友。
模型中的 "validates_" 方法通常都可以传递一个:message => "My Validation Message"参数。
我通常将错误包装成这样:
<% if(!@model.errors.empty?) %>
<div id="error_message">
<h2>
<%= image_tag("error.png", :align => "top", :alt => "Error") -%>
Oops, there was a problem editing your information.
</h2>
<%= short_error_messages_for(:model) %>
</div>
<% end %>
然后在我的application_helper中迭代错误并生成一个简单的列表:
def short_error_messages_for(object_name)
object = instance_variable_get("@#{object_name}")
if object && !object.errors.empty?
content_tag("ul", object.errors.full_messages.collect { |msg| content_tag("li", msg) } )
else
""
end
end
这段代码已经很老了,可能不是我现在写 Ruby 的方式,但你明白了要点。
您可以自己迭代 model.errors 哈希,而不是使用错误帮助器。