rails 3的验证自定义消息

Pra*_*tha 93 ruby validation activerecord ruby-on-rails ruby-on-rails-3

Rails引入了验证模型内属性的新方法.我用的时候

validates :title, :presence => true
Run Code Online (Sandbox Code Playgroud)

它工作,但当我尝试添加自定义消息

validates :title, :presence => true,:message => "Story title is required"
Run Code Online (Sandbox Code Playgroud)

生成错误

Unknown validator: 'message'
Run Code Online (Sandbox Code Playgroud)

Shi*_*hiv 194

试试这个

validates :title, presence: { message: "Story title is required" }
Run Code Online (Sandbox Code Playgroud)

  • 如何从上面的错误消息中删除:标题?以上显示为"标题故事标题是必需的".我想要"故事标题是必需的." 谢谢. (19认同)
  • 在这个答案中,`=> true`在哪里?没必要吗? (5认同)
  • @dukedave奇怪的是没有必要.你可以将任何"真实"传递给"存在". (2认同)
  • @Mayumi - 您可以通过编写手动验证并将错误添加到`:base`来删除消息中的属性名称,例如`errors.add(:base,"Story title is required)" (2认同)

Mat*_*sgf 18

实际上,我是以更好的方式做到了这一点.如果要从消息中删除字段标题,则应在_form.htmk.erb视图中使用此标题:

正如您在此视图中看到的那样:

<ul>
  <% @article.errors.full_messages.each do |msg| %>
  <li><%= msg %></li>
  <% end %>
</ul>
Run Code Online (Sandbox Code Playgroud)

替换为:

<ul>
  <% @article.errors.each_with_index do |msg, i| %>
  <li><%= msg[1] %></li>
  <% end %>
</ul>
Run Code Online (Sandbox Code Playgroud)