这种错误一般发生在,还没有创建的情况下就进行edit+update操作。
譬如在blog应用里,新建了一个blog对象,它关联一个logo对象,当你创建了blog对象时,logo对象还未创建,此时如果修改blog,并且还捎带的上传logo的话就会发生nil.update_attributes错误。
为了解决这个问题,可以在logos_controller的update方法里这样写:
@logo=(@blog.avatar ||= @blog.create_avatar)
或者这样写:
@logo= Logo.find_or_create_by_blog_id(@blog.id)
本文转自 fsjoy1983 51CTO博客,原文链接:http://blog.51cto.com/fsjoy/124250,如需转载请自行联系原作者