说我有以下型号:
class Information < ActiveRecord::Base
...
validates_length_of :name, :minimum=>3, :message=>"should be longer than 3 characters!"
...
我想要的错误是:
信息应超过3个字符!(或类似)
和“信息名称应该超过3个字符!”。
我看过两种可能的解决方法:
human_attribute_name
方法(提到here):不适用于我的Rails 2.3.2。: - (information.errors.add "","..." if information.name.length < 3
:但是,这会删除由validated_length_of
方法触发的许多有用属性,例如特殊的类标记(用于将内容着色为红色)。 < / LI>
醇>
有什么想法吗?谢谢你的时间。
答案 0 :(得分:2)
我认为您通过 full_messages 方法显示错误,该方法适用于控制台,而不是用于Web应用程序。您应该使用 error_message_on 或 error_messages_for 帮助程序(有关详细信息,请参阅documentation),这样您就可以自定义错误消息。
示例:
<%= error_message_on "information", "name", :prepend_text => 'Information ' %>
答案 1 :(得分:1)
不要使用rails helper来产生错误,通常我会有内联错误,例如:
def inline_error_block(obj, meth, prepend="", append="", klass="error error-form", &block)
content = capture(&block)
obj = (obj.respond_to?(:errors) ? obj : instance_variable_get("@#{obj}"))
if obj
errors = obj.errors.on(meth.to_s)
if errors
output = content_tag(:div, :class => klass) do
content_tag(:p, "#{prepend}#{errors.is_a?(Array) ? errors.first : errors}#{append}", :class => "error-msg clearfix") + content
end
return concat(output)
end
end
concat(content_tag(:div, content, :class => "no-error"))
end
倾向于做这个技巧,但是,它只显示每个表单字段一个错误,我确定你可以重新排列它以显示所有,如果你需要! (errors.first to errors.each)。
要获取全名,只需根据需要显示包含字段名称的消息:
validates_length_of :name, :minimum=>3, :message=>"Information should be longer than 3 characters!"
答案 2 :(得分:1)
您始终可以将:message设置为模型中的空字符串,然后将视图中的:prepend_text设置为您喜欢的任何内容。