我按照导轨的'Getting Started'指南
一切都运作良好,我几乎阅读了所有其他章节。我在评论模型上添加了一个自定义验证器来练习一点。 验证器添加和错误,我想通过使用相同的文章代码在评论/ _form.html.erb部分打印它
<% @comment.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
验证器工作正常(事务成功回滚)但部分中没有打印任何内容。 @comment是零。
出现错误的最佳方法是什么?
编辑:
这是草稿验证器
class AntiSpamValidator < ActiveModel::Validator
def validate(record)
if record.body.starts_with? 'http://'
record.errors[:body] << "Pls don't spam!"
end
end
end
class Comment < ApplicationRecord
belongs_to :article
validates_with AntiSpamValidator
end
答案 0 :(得分:0)
我建议阅读ActiveModel::Errors
在这里,您会发现需要添加错误消息关于正文,而不是在消息中添加消息。
所以你可以这样做:
...
if record.body.starts_with? 'http://'
record.errors.add(:body, :spam, message: "Pls don't spam!")
end
...
顺便说一下:
.full_messages
将本地化字段名称添加到错误消息中,以便您打印如下内容:"Body Pls don't spam!
如果您只想显示消息,可以在视图中执行以下操作:
<% @comment.errors.each do |field, msg| %>
<li><%= msg %></li>
<% end %>
但当然这会破坏Rails的默认错误消息