当我提交一个空地址(街道+城市)字段时,我遇到了以下错误。
undefined method `nom_ville' for nil:NilClass
app/models/venue.rb:15:in `gmaps4rails_address'
app/controllers/venues_controller.rb:74:in `block in create'
app/controllers/venues_controller.rb:73:in `create'我的模型
class Venue < ActiveRecord::Base
belongs_to :profile
belongs_to :type
belongs_to :ville
belongs_to :departement
belongs_to :region
has_and_belongs_to_many :games
acts_as_gmappable
validates :rue, :nom, :ville_id, :region_id, :departement_id, :presence => true
def gmaps4rails_address
"#{self.rue}, #{self.ville.nom_ville}, France"
end
endnom_ville来自Ville model,但尚未创建对象Venue,因为验证失败(:rue和:nom为空)。
为什么在Venue模型上添加gmaps4rails not错误?
对不起,我的英语,谢谢,
纳尔逊
发布于 2011-12-30 22:58:47
我认为这与gmaps4rails无关。基本上,您只是创建了一个场所,而没有设置ville,所以在gmaps4rails_address中,您尝试在nil对象上访问nom_ville。您只需要在此方法中进行一次测试来避免这种情况,然后基本的rails验证将生效,因为rue和ville是必需的。
发布于 2013-09-20 09:12:01
你可以这样做:
def gmaps4rails_address
if self.ville
"#{self.rue}, #{self.ville.nom_ville}, France"
else
<do something else>
end
endhttps://stackoverflow.com/questions/8680223
复制相似问题