使用Rails验证帮助程序:消息但希望它不在消息中列出列名

dau*_*777 21 validation ruby-on-rails

使用Rails验证助手 -

validates_xxx_of :the_column, :message => "my message"
Run Code Online (Sandbox Code Playgroud)

将生成验证消息:

the_column我的消息

有没有办法关闭列名称的包含?(用任何验证帮助方法替换xxx)

Har*_*wig 16

我知道这个问题很老了.但仅供参考,万一其他人偶然发现它.

至少在Rails 3.0.x中(不确定早期版本)你可以使用RadBrad指示的前导^,而不需要任何gems /插件.

  • 这个**不适用于Rails 3.2.6 (3认同)
  • 我正在使用 Rails 3.1,但这不起作用。但是,我可以这样做: <% object.errors.full_messages.each do |msg| %> <% msg = msg.split("^").last %> ... <% end %> (2认同)

小智 7

Rails 4回答

看看这里的代码:

https://github.com/rails/rails/blob/master/activemodel/lib/active_model/errors.rb#L374

因此,您可以在en.yml文件中设置:

en:
  errors:
    format: '%{message}'
Run Code Online (Sandbox Code Playgroud)

这意味着您还需要在其他地方设置完整的错误消息,但我想这是更可取的.注意,我发现这个令人困惑,错误格式不在ActiveRecord命名空间中,我通常将其余的错误消息放入其中.


小智 6

有一个客户错误消息gem应该做你想要的

https://github.com/jeremydurham/custom-err-msg

它允许您覆盖正常的消息构造,并自己定义完整的消息,如下所示:

:message =>"^您的电子邮件地址似乎相当混乱,请再试一次"

注意^字符,告诉rails不要预先添加任何内容,只需使用完全按照定义的消息,(除了它删除^)

如果你没有放一个前导^,那么你得到正常的rails生成错误信息.


Luk*_*ncl 1

我这样做的方法是覆盖所有消息,而不是使用 Rails 表单助手来显示错误消息。

这看起来工作量很大,但实际上有一些好处。您可以完全控制消息,然后可以实现自定义表单生成器,该生成器可以将错误消息内联,这对用户来说更好。

你像这样使用它:

validates_uniqueness_of :foobar, :message => "The foobar isn't unique."

full_messages然后打印错误信息时不要使用。