在构建自定义验证时,我在显示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遗骸== {}: - / ...
然后用户被重定向到保存过程失败时应该看到的页面(验证已正确执行),但他从未看到错误消息...
我错过了一些明显的东西吗? ......
答案 0 :(得分:1)
好的......失败的原因是因为我在保存事务时在控制器中执行了REDIRECT_TO,从而删除了@transaction.errors
向量...
将此更改为render :template => 'transactions/edit'
解决了我的问题..
当然,很难猜到这个问题: - / ...