我在我的Rails 3应用程序模型中有以下代码。问题是这些错误消息没有出现在我的表单中。我知道错误消息部分是正确的,因为其他字段的其他错误正在显示。我做错了什么?
validates_as_geocodable :allow_nil => true do |geocode|
if geocode.nil?
model_instance.errors.add_to_base("Please specify a location")
return false
end
if geocode.precision >= :locality
model_instance.errors.add_to_base("Try to be more specific w/ your location")
return false
end
end
答案 0 :(得分:0)
如果你看https://github.com/collectiveidea/acts_as_geocodable/blob/rails3/lib/acts_as_geocodable.rb,你会看到
if !geocode ||
(options[:precision] && geocode.precision < options[:precision]) ||
(block_given? && yield(geocode) == false)
model.errors.add :base, options[:message]
end
如果geocode.nil?
,则永远不会调用yield(geocode)
=&gt;你的块也不会被调用。不知道第二个条件,但我认为你也应该检查它。