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 内にデバッガーを配置しました。検証が行われることを確認しましたが、実際、デバッガー内で次のように入力していることがわかります。
オブジェクトが有効ではなかったので、ビューにエラー メッセージが表示されることを期待していましたが、そうではありませんでしたerror_messages.html.erb
。 ...
ユーザーは、保存プロセスが失敗したときに表示されるはずのページにリダイレクトされます (検証が正しく実行されました) が、エラー メッセージは表示されません ...
明らかな何かが欠けていますか?...