error_messages.html.erb
在构建自定义验证时,我无法显示部分内容。
例如,我有一个进行交易的表格,其开头如下:
<%= form_for @transaction do |f| %>
<%= render 'shared/error_messages', :object => f.object %>
我有一个验证可以防止用户与自己进行交易:
validate :self_transaction_not_possible
和
def self_transaction_not_possible
bel = Belonging.find_by_id(self.belonging.id)
unless bel.nil?
if self.user_id == bel.user_id
errors.add(:base, "You cannot perform a transaction with yourself")
end
end
end
然后我在浏览器中运行了这样一个示例(在我拥有的财产上启动事务),并在 self_transaction_not_possible 中放置了一个调试器。我检查了验证是否发生,实际上,在调试器内部,我看到输入:self.errors.full_messages 给了我错误消息,因此似乎执行了验证......
然后我会期望,因为对象无效,错误消息会出现在我的视图中,但是没有......将调试器放在error_messages.html.erb
部分中向我显示 object.errors.any 仍然 == {} :-/ ...
然后用户被重定向到保存过程失败时应该看到的页面(验证已正确执行),但他从未看到错误消息......
我错过了一些明显的东西吗?...