我在構建自定義驗證時顯示error_messages.html.erb
部分時出現問題。error_message部分未在Rails中呈現
我有,例如,一種形式進行交易,這將啓動,如:
<%= 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仍然== {}: -/...
然後,用戶被重定向到保存過程失敗時應該看到的頁面(驗證已正確執行),但他從未看到錯誤消息...
我是否缺少明顯的東西? ...
很難從真正的bug區分你的打字錯誤:'<%=的form_for @Transaction,做| F | %>' - 逗號在這裏做什麼? '<%= render'shared/error_messages'; :object => f.object%>' - 爲什麼你在這裏放分號? '除非bel.nil?' - 'nil'之後的空格是故意的?等等...... – jdoe
@jdoe:好的,我輸入的速度太快,並且由於網絡問題,我無法複製/粘貼。無論如何,問題現在是無字形的(我希望)... – citraL